How to filter rows in a timetable based on a range between 08:00 and 16:00 for everyday and put in a new timetable

조회 수: 9 (최근 30일)
Hi, I need to filter som data I have so that I get the rows from only the time between 08:00 and 16:00 or the "occupied time" where I am assuming there will be people present in my measurements. The data I have is a date in column 1 and in 2,3,4 I have temperature, relative humidity and CO2. But the data I have now is for all 24 hours of everday in about a month of data.
How can I filter this data and put it in its own timetable since I want to plot both the whole measuring period and also the isolated range.
I can use the rangetime function like this:
S = timerange(' 21-Oct-2019 08:00:00',' 21-Oct-2019 17:00:00'); %Creating a variable S with the values within the timerange.
TT2 = IC11avHour(S,:); %Creating the new timetable with the rows of information.
And then TT2 is my new timetable and this works but this is only for 1 day but I want it for all days within the timerange.
Can anyone help me?

답변 (1개)

Eric Sofen
Eric Sofen 2019년 12월 4일
You can do this with some logical indexing on the row times.
Create a timetable with a few days worth of hourly data:
tt = timetable((1:100)','TimeStep',hours(1),'StartTime',datetime)
The hour() function gives the clock hour of a datetime, so get all times between 08:00 and 17:00
tt(hour(tt.Time)<=17 & hour(tt.Time)>=8,:)
ans =
44×1 timetable
Time Var1
____________________ ____
04-Dec-2019 11:41:07 1
04-Dec-2019 12:41:07 2
04-Dec-2019 13:41:07 3
04-Dec-2019 14:41:07 4
04-Dec-2019 15:41:07 5
04-Dec-2019 16:41:07 6
04-Dec-2019 17:41:07 7
05-Dec-2019 08:41:07 22
05-Dec-2019 09:41:07 23
...

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by