select data from table according to date and time
显示 更早的评论
Hallo,
I need your help for matlab.
I have a table with dates and times data for 7 days. I want to select records between 14:00 to 16:00 for each day?!
Thanks
2 个评论
Walter Roberson
2019-3-26
Are the times in a separate variable in the table, or do you have a single datetime column?
If the times are in a separate variable in the table, then what format are they in?
MOMO JOJO
2019-3-27
回答(1 个)
Akira Agata
2019-3-27
How about the following way?
% Create sample data
Time = sort(datetime(2019,3,24) + days(7)*rand(1000,1));
Data = rand(1000,1);
T1 = table(Time,Data);
% Select records (row index) between 14:00 to 16:00
idx = (T1.Time.Hour >= 14) & (T1.Time.Hour) < 16;
% Extract selected records
T2 = T1(idx,:);
8 个评论
Walter Roberson
2019-3-27
idx =(T1.Time.Hour >= 14) & ((T1.Time.Hour < 16) | (T1.Time.Hour == 16 & T1.Time.Minute <= 30));
Or you could do something like
temp = T1.Time.Hour * 60 + T1.Time.Minute;
idx = temp >= 14*60 & temp <= 16*60+30;
Akira Agata
2019-3-27
Thank you, Walter-san !
MOMO JOJO
2019-3-28
Peter Perkins
2019-4-2
isbetween would probably make this more manageable:
>> isbetween(timeofday(datetime),'14:00:00','16:30:00')
ans =
logical
1
Aryan Ritwajeet Jha
2021-4-7
isbetween command is much more convenient.
%Here, the 'time' column in the 'data' table stores the complete time for that instance
%in the format 'dd-MMM-yyyy hh:mm:ss'.
intervalStartTime = '09-Aug-2019 15:50:00';
intervalEndTime = '09-Aug-2019 16:00:00';
idx = isbetween(data.time,intervalStartTime,intervalEndTime);
selectedRows = data(idx,:); %Stores only the rows with the desired time instances
pruth
2022-2-21
hello,
what if i want to select minutes along with an hour. ? data between 14:30 and 15:30 ? how do i do it ?
Peter Perkins
2022-3-2
Presumably you would modify my answer from 2-Apr-2019.
类别
在 帮助中心 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!