How can I access two subset of a string in a table field (to convert into two datetime fields) ?
1 view (last 30 days)
Show older comments
Hello,
I can not manage to find a vectorized way to deal with a long table string to datetime conversion.
I explain:
I have a 4496835x3 table. My second field (Dates) has been imported into a field containing cells.
This field is composed of uniform strings containing two dates (beggining-ending). Example: '2016.11.07 21:00-2016.11.07 22:00' (a string of 33 characters)
I want to create two other fields in datetime format (Let's say Date1 and Date2).
I can already manage it by looping on each row:
InputFmt='yyyy.MM.dd HH:mm';
for j=1:height(data)
data.Date1(j)=datetime(data.Dates{j}(1:16),'InputFormat',InputFmt);
data.Date2(j)=datetime(data.Dates{j}(18:end),'InputFormat',InputFmt);
end
which is very long to compute.
I also tried a kind of pre-allocation, using:
data.Date1(:,1)=DefaultDate;
data.Date2(:,1)=DefaultDate;
before the loop, where DefaultDate is an odd date in datetime format. But it is still heavy to run...
That's why I am wondering of a way to vectorize this datetime conversion, but I can not find a way to access each 'sub-string' independently. Indeed, I try different combinations of braces/curly braces, indexing, but nothing goes as I wish. I have to admit that struct and cell indexing are still things that I don't catch well either.
Example of codes that I tried to access the "Date1-Part":
test.Dates{:}(1:16)
test.Dates{:,1}(1:16)
{data.Dates(1:16)}
[data.Dates(1:16)]
and probably some others.
I hope it is clear enough, and thanks if anyone can help.
0 Comments
Accepted Answer
Walter Roberson
on 7 Nov 2016
splitzees = regexp(data.Dates, '-', 'split');
as_cell = vertcat(splitzees{:});
datetime(as_cell, 'InputFormat', InputFmt)
That would give you an N x 2 array of datetime objects
More Answers (0)
See Also
Categories
Find more on Dates and Time in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!