Missing 2000 years on date from csv file.
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Mohamed Larabi
el 12 de En. de 2019
Respondida: Corinne Beier
el 24 de Abr. de 2019
Hi,
When I read date column from a csv file, Matlab lacks 2000 years on every single date row. For example on the csv file it is 01/01/2018, Matlab reads it 01/01/0018. I use the function 'readtable'. Do you have any explanation to this, or any idea on how to fix this error? It is important for me to store the loaded data in a table format as I use functions like 'timetable' and 'retime' afterwards. Thank you
2 comentarios
Respuesta aceptada
madhan ravi
el 12 de En. de 2019
Perhaps?
T=readtable('Treasury.csv');
a=strrep(string(T.Date),'0018','2018');
T.Date=a
6 comentarios
Stephen23
el 12 de En. de 2019
"Let me know if you have a more efficient method. This one works, but I am sure there is better."
The better and more efficient method is to store the complete date in the CSV file, preferably in an ISO 8601 date format.
Más respuestas (2)
Corinne Beier
el 24 de Abr. de 2019
I was able to fix my 0018 and 0019 datetime issue using this:
opts = detectImportOptions('/path/to/file.csv');
opts = setvaropts(opts,'myDateVariableName','InputFormat','MM/dd/y HH:mm');
data = readtimetable('/path/to/file.csv', opts);
The key for me was changing the date time format to include only 1 'y':
'MM/dd/y HH:mm'
Because I originally tried
'MM/dd/yyyy HH:mm' and 'MM/dd/uuuu HH:mm'
and they both did not work.
Also, I did have some trouble with my variable name. See below.
'myDateVariableName'
is the name of the column that has datetime values. Please note, if Matlab is changing your variable for you, use Matlab's version of the variable name. e.g. my data was actually labeled as "Channel Name:" and Matlab always changed the name to "ChannelName_" For my fix to work I had to use 'ChannelName_' as 'myDateVariableName'
Hope this helps.
0 comentarios
Peter Perkins
el 23 de En. de 2019
If all you have is a missing "20", the quick and dirty solution is to add calyears(2000) to each datetime in your table. But the right thing to do is to use a format when reading the data, preferably using detectimportoptions.
And of course Stephen is correct: the real solution is to try to get the data in the file to be in a less ambiguous form.
0 comentarios
Ver también
Categorías
Más información sobre Dates and Time en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!