how to read mixed date and data

3 views (last 30 days)
DwiNY
DwiNY on 24 Sep 2021
Commented: DwiNY on 27 Sep 2021
How to read this data file:
2020/11/15 07:30:55 27.50 124
2020/11/15 07:40:55 27.63 114
2020/11/15 07:50:55 27.71 95

Accepted Answer

Jeremy Hughes
Jeremy Hughes on 27 Sep 2021
I made some corrections in the comments above, but this is how I would do this more robustly using partial detection with detectImportOptions.
filename = "example.txt";
opts = detectImportOptions(filename,"Delimiter","\t");
opts = setvaropts(opts,1,"Type","datetime","InputFormat","uuuu/MM/dd HH:mm:ss");
T = readtable(filename,opts)
T = 3×3 table
Var1 Var2 Var3 ___________________ _____ ____ 2020/11/15 07:30:55 27.5 124 2020/11/15 07:40:55 27.63 114 2020/11/15 07:50:55 27.71 95
  2 Comments
DwiNY
DwiNY on 27 Sep 2021
Dear Jeremy Hughes,
Thank you very much
DwiNY
DwiNY
DwiNY on 27 Sep 2021
Jeremy,
If you could make more a general, i.e. input file with XX number of lines of header would be appreciate.
Thank you

Sign in to comment.

More Answers (1)

the cyclist
the cyclist on 24 Sep 2021
I would try the readtable function.
You can specify the input formating if needed.
  4 Comments
DwiNY
DwiNY on 27 Sep 2021
Finally, I able to read the file correctly:
fid=fopen('filename.txt','rt');
formatSpec = '%{yyyy/mm/dd}D %{HH:mm:ss}D %f%f ';
delimiter = {'\t',' '};
dataArray = textscan(fid, formatSpec, 'Delimiter', delimiter,'MultipleDelimsAsOne', true, 'ReturnOnError', false);
fclose(fid)
Jeremy Hughes
Jeremy Hughes on 27 Sep 2021
If you're using format, there are issues with your format in both cases: mm cannot be both months and minutes, you want MM.
Also, you probably want the second part as duration if you're parsing these as separate fields.
try this: formatSpec = '%{yyyy/MM/dd}D{hh:mm:ss}T%f%f'
But I like your first approach better:
delimiter = '\t'; %no space
formatSpec = '%{yyyy/MM/dd HH:mm:ss}D%f%f'

Sign in to comment.

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!