readtable working differently for different files

4 次查看(过去 30 天)
I have a bunch of spreadsheets which all have the same format. However, when I read them in, they appear differently...
folder=('H:\SoundTrap\Boats\Manual Vessel Detections');
d=dir(fullfile(folder,'*.csv'));
site=('Goat');
for i=1:height(d)
idx=contains(d(i).name,site);
if idx==1
out{i}=readtable(fullfile(folder,d(i).name));
end
end
For some reason, one of the files is read using a different delimeter? So the columns are incorrectly split. How can I rectify this? I have tried detect import options and 'Format' '%s%s%s' to no avail. Perhaps I am using these incorrectly though. The desired format is the one below:
  3 个评论
Stephen23
Stephen23 2021-6-8
@Louise Wilson: please upload two or more sample flles (ones which import differently) by clicking the paperclip button.
Louise Wilson
Louise Wilson 2021-6-8
Thank you both, sorry for failing to do this in the first instance! I have attached two .csv files here. 001 is the file which is currently loading in as I would like it to.

请先登录,再进行评论。

采纳的回答

Walter Roberson
Walter Roberson 2021-6-8
T1 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/645435/001_GoatIsland_5100_manualVesselDetections.csv', 'delimiter', ',');
T1(1:10,:)
ans = 10×2 table
Filename BoatPresence ______________________________ ____________ {'5100.190610124350_2min.png'} 1 {'5100.190610152350_2min.png'} 1 {'5100.190610170350_2min.png'} 0 {'5100.190610182350_2min.png'} 1 {'5100.190610205350_2min.png'} 1 {'5100.190610214350_2min.png'} 1 {'5100.190610230350_2min.png'} 1 {'5100.190611003350_2min.png'} 1 {'5100.190611030350_2min.png'} 1 {'5100.190611041350_2min.png'} 0
T2 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/645440/009_GoatIsland_5100_manualVesselDetections.csv', 'delimiter', ',');
T2(1:10,:)
ans = 10×3 table
Filename BoatPresence Var3 ______________________________ ____________ __________ {'5100.200316151440_2min.png'} 0 {0×0 char} {'5100.200316165440_2min.png'} 0 {0×0 char} {'5100.200316190440_2min.png'} 0 {0×0 char} {'5100.200316195440_2min.png'} 0 {0×0 char} {'5100.200316212440_2min.png'} 0 {0×0 char} {'5100.200317001441_2min.png'} 1 {0×0 char} {'5100.200317004441_2min.png'} 0 {0×0 char} {'5100.200317025441_2min.png'} 0 {0×0 char} {'5100.200317041441_2min.png'} 0 {0×0 char} {'5100.200317071441_2min.png'} 0 {0×0 char}
The files are different: the second one has an extra empty field, and that throws off MATLAB into thinking maybe the delimiter is underscore.
  1 个评论
Louise Wilson
Louise Wilson 2021-6-8
Thanks so much Walter! This fixes my problem and also helps me to understand why this happened. I was not aware there was a third empty column.

请先登录,再进行评论。

更多回答(0 个)

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by