How can I access two subset of a string in a table field (to convert into two datetime fields) ?

2 ビュー (過去 30 日間)
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.

採用された回答

Walter Roberson
Walter Roberson 2016 年 11 月 7 日
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
  1 件のコメント
Water_RC
Water_RC 2016 年 11 月 8 日
Hello Walter,
Thanks for your answer. I was not aware of this useful function.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDates and Time についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by