How do I separate date and time of a raw date?

1 visualización (últimos 30 días)
aishah
aishah el 30 de Mzo. de 2018
Comentada: Walter Roberson el 24 de Feb. de 2019
>> a = untitled.startDate(1:10)
a =
10×1 categorical array
2013-07-10 00:01:00.0
2013-07-17 00:01:00.0
2013-06-29 00:01:00.0
2013-07-17 00:01:00.0
2013-05-11 00:01:00.0
2013-05-31 00:01:00.0
2013-06-06 00:01:00.0
2013-08-31 00:01:00.0
2013-05-21 00:01:00.0
2013-08-06 00:01:00.0
>> a.Format = 'dd-MMM-yyyy'
Error using categorical/subsasgn (line 87)
Attempt to assign field of non-structure array.
  3 comentarios
aishah
aishah el 30 de Mzo. de 2018
What I did was, I imported the data into a 'table'. And I convert the data to 'Categorical Array'.
aishah
aishah el 30 de Mzo. de 2018
The imported data type is 'datetime'.

Iniciar sesión para comentar.

Respuesta aceptada

Ahmet Cecen
Ahmet Cecen el 30 de Mzo. de 2018
Editada: Ahmet Cecen el 30 de Mzo. de 2018
arrayfun(@(x) strsplit(x,' '),string(a),'UniformOutput',false)
string(a) - this makes the data easily process-able, converts to a string array.
@(x) strsplit(x,' ') - this is a function that splits each string into parts whenever a space(' ') is located(which works for your case)
arrayfun - applies the above function to each "row" in the string array.
  7 comentarios
aishah
aishah el 30 de Mzo. de 2018
b = reshape([k{:}],2,length(a))'
Undefined variable "k" or class "k".
aishah
aishah el 30 de Mzo. de 2018
celldisp(b)
b{1} =
"2013-07-10" "00:01:00.0"
b{2} =
"2013-07-17" "00:01:00.0"
b{3} =
"2013-06-29" "00:01:00.0"
b{4} =
"2013-07-17" "00:01:00.0"
b{5} =
"2013-05-11" "00:01:00.0"
b{6} =
"2013-05-31" "00:01:00.0"
b{7} =
"2013-06-06" "00:01:00.0"
b{8} =
"2013-08-31" "00:01:00.0"
b{9} =
"2013-05-21" "00:01:00.0"
b{10} =
"2013-08-06" "00:01:00.0"

Iniciar sesión para comentar.

Más respuestas (1)

Peter Perkins
Peter Perkins el 2 de Abr. de 2018
Don't do any of that.
You've read the timestamps in as datetimes. Don't fight that. Assuming you have a table T:
T.StartTime = timeofday(T.StartDate);
T.StartDate = dateshift(T.StartDate,'start','day);
  6 comentarios
Steph
Steph el 24 de Feb. de 2019
I missteated my problem I think, I am doing regressions on the data that is collected on each of the specific days. Not on the dates or days themselves
Walter Roberson
Walter Roberson el 24 de Feb. de 2019
Then you do not need to convert the dates + times or datetime objects to numeric. What you need to do is be able to group your data based upon date. You should have a look at splitapply() -- or convert the table to a timetable() object and use retime()

Iniciar sesión para comentar.

Categorías

Más información sobre Dates and Time en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by