Customized datetime format within table
显示 更早的评论
Hi all,
I am trying to compare 2 tables (for both 1st column is datetime, others are numbers). I am trying to find the common timeperiod between those 2 tables. Unfortunately, days are not the same. My original idea is to convert dates into string and look for matching strings between both tables.
Question:
I am a beginner at Matlab, is there a better way to do it? If not, is there an elegant way to get rid of the 2 loops?
Here is the script for the transformation shown in the workspace
------------------------------------------------------------
A1 = readtable(file_name,'VariableNamingRule','preserve'); clc;
B1 = readtable('Independant variables.xlsx');
for i = 1:height(A1)
A2{i,1} = extractBetween(datestr(A1{i,1}),4,11);
end
for j = 1:height(B1)
B2{j,1} = extractBetween(datestr(B1{j,1}),4,11);
end
------------------------------------------------------------

Thanks and best regards,
3 个评论
Stephen23
2023-12-2
"My original idea is to convert dates into string and look for matching strings between both tables."
Converting to string is usually a sign that the user is not leveraging the DATETIME class to do its job.
"is there a better way to do it?"
There might be some inbuilt approach using TIMETABLES.
Otherwise MAX & MIN and logical indexing would seem to do what you want.
Walter Roberson
2023-12-2
Vic
2023-12-3
采纳的回答
更多回答(1 个)
Vic, I think you want synchronize.
tt1 = timetable([1;2;3;4;5],RowTimes=datetime(2023,1:5,1))
tt2 = timetable([6;7;8;9;10],RowTimes=datetime(2023,1:5,[31 28 31 30 31]))
tt3 = synchronize(tt1,tt2,"monthly","firstvalue");
tt3.Time.Format = "MMM-uuuu"
If you don't want the two timetables joined together, use retime on the second one with the first one's time vector as the target row times.
类别
在 帮助中心 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!