How to read an excel /csv files with columns that have both text and numbers?

조회 수: 3 (최근 30일)
Everytime I try to use readcell , readtable.. I get one or alll of the following problems:
  1. Numeric columns get merged into one cell array ex : {1.5,2.5} vs them being in two unique cells
  2. Additional columns that dont exist in my csv/xlsx files with 1x1 missing filled in
  3. Nan for string entries
I saw online that a column with text and numeric values dont mix well. Anyone have any suggestions?
I am also trying to find a specific string value index (xdist_mm,Power_watts) for each file to then import the data under each of these headers into a seperate array for analysis. I tried strfind and contains without much sucess)
Thank you

채택된 답변

Stephen23
Stephen23 2024년 7월 1일
편집: Stephen23 2024년 7월 1일
fnm = 'sample.csv';
tmp = readcell(fnm, 'Delimiter',',');
idx = cellfun(@ischar,tmp(:,1));
assert(all(diff(idx)<1))
nhl = nnz(idx)-1;
tbl = readtable(fnm, 'Delimiter',',', 'NumHeaderLines',nhl)
tbl = 123x2 table
xdist_mm Power_watts ________ ___________ 65 1.5135e-05 64.9 2.0816e-05 64.8 2.3005e-05 64.7 2.5731e-05 64.6 2.8835e-05 64.5 3.2803e-05 64.4 3.7081e-05 64.3 4.2204e-05 64.27 4.4028e-05 64.17 5.03e-05 64.07 6.312e-05 63.97 6.6702e-05 63.87 7.8218e-05 63.77 9.2614e-05 63.67 0.00011157 63.57 0.00013425
hdr = cell2struct(tmp(1:nhl,2),tmp(1:nhl,1))
hdr = struct with fields:
Distance_yaw: 1502 Units: 'Meter' Scan_start_time: '2024-06-26_09-35-52' Analog_filter_value: 4 Digital_filter_value: 10000 Filter_type: 3 ID_string: 'NOreo 2936-R v1.3.4 04/27/20 SN9520' Responsivity: 4.2361e-04 Zero_value: 0 Channel: 2 Test_number: 1503 Z_stage_start_mm: 100 Y_stage_start_mm: 2.2800 SCC_number: 107 alpha_test1_deg: 2.6275 alpha_test2_deg: -6.1321 Z_stage_W1_start_mm: 100 Y_stage_W1_start_mm: 2.2800 X_stage_W1_center_mm: 59.9700 Rot_stage_W1_start_deg: -17.3725 Z_stage_W2_start_mm: 10 Y_stage_W2_start_mm: 3 X_stage_W2_center_mm: 5 Rot_stage_W2_start_deg: -26.1321 Pin_grating_ID: 0 Wavelength_test_num: 1 Baseplate_configuration: 1 Instrument_rev_level: 1 Y_stage_IS_start_mm: 46.1210 Z_slit_to_IS_shift_mm: -0.9750 X_slit_to_IS_shift_mm: -0.9460 Analog_filter_setting: 3 Digital_filter_counts: 100 Filter_selection: 3 X_stage_IS_W1_increment_mm: 3 loop_Z_increment_mm: 0.2000 loop_Z_number: 11 baseplate_hole_ID: NaN stage_home_slit_offset_mm: 100 detection_hole_pin_ID: 0 source_hole_pin_ID: 0 X_stage_center_mm: 59.9700 Rot_stage_start_deg: -17.3725 X_stage_close_mm: 65 X_stage_far_mm: 53 z_vertex_to_slit_mm: 0

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Data Import and Analysis에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by