readtable working differently for different files

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 个评论

hello Louise
can you share the problematic spreadsheet file as well ? and maybe one that works fine too
tx
@Louise Wilson: please upload two or more sample flles (ones which import differently) by clicking the paperclip button.
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.

请先登录,再进行评论。

 采纳的回答

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 个评论

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 个)

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品

版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by