Locate indices of datetime from one table in another?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello,
I have to loacte indices in the date column in a table that looks like this (Table 1)
from a table that looks like (Table 2)
Given that the Table 2 (day_time_date) has categorical values whereas the Table 1 has datetime values. The reason it is categorical is because I have used
groupsummary
to summarise the dates from Table 1 which removed the timestamps as well. Thanks
0 Kommentare
Akzeptierte Antwort
Peter Perkins
am 4 Mär. 2022
1) It looks like you must have use "day" as an input to groupsummary, which returns a categorical as the group values:
>> tt = timetable(datetime(2022,3,randi([1 3],10,1)),rand(10,1))
tt =
10×1 timetable
Time Var1
____________________ ________
01-Mar-2022 00:09:43 0.45054
01-Mar-2022 00:47:39 0.083821
02-Mar-2022 00:18:40 0.22898
03-Mar-2022 00:31:42 0.91334
03-Mar-2022 00:09:56 0.15238
01-Mar-2022 00:36:07 0.82582
02-Mar-2022 00:15:46 0.53834
02-Mar-2022 00:39:14 0.99613
01-Mar-2022 00:41:21 0.078176
02-Mar-2022 00:44:53 0.44268
>> groupsummary(tt,"Time","day","mean")
ans =
3×3 table
day_Time GroupCount mean_Var1
___________ __________ _________
01-Mar-2022 4 0.35959
02-Mar-2022 4 0.55153
03-Mar-2022 2 0.53286
>> class(ans.day_Time)
ans =
'categorical'
Categorical is what those "convenience" flags like "day" do. But you don't have to use that. The simplest way to get the group values as datetimes is like this:
>> tt.Day = dateshift(tt.Time,'start','day')
tt =
10×2 timetable
Time Var1 Day
____________________ ________ ___________
01-Mar-2022 00:09:43 0.45054 01-Mar-2022
01-Mar-2022 00:47:39 0.083821 01-Mar-2022
02-Mar-2022 00:18:40 0.22898 02-Mar-2022
03-Mar-2022 00:31:42 0.91334 03-Mar-2022
03-Mar-2022 00:09:56 0.15238 03-Mar-2022
01-Mar-2022 00:36:07 0.82582 01-Mar-2022
02-Mar-2022 00:15:46 0.53834 02-Mar-2022
02-Mar-2022 00:39:14 0.99613 02-Mar-2022
01-Mar-2022 00:41:21 0.078176 01-Mar-2022
02-Mar-2022 00:44:53 0.44268 02-Mar-2022
>> groupsummary(tt,"Day","mean")
ans =
3×3 table
Day GroupCount mean_Var1
___________ __________ _________
01-Mar-2022 4 0.35959
02-Mar-2022 4 0.55153
03-Mar-2022 2 0.53286
>> class(ans.Day)
ans =
'datetime'
2) I'm confused. None of the "dates" in day_time_date appear in time_date.
Your question might be, "which rows of time_date correspond to each row of day_time_date?" That's easy, once you have tt.Day:
ismember(tt.Day,day_time_date)
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Data Preprocessing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!