Reputation: 13
I have a datetime row containing dates/times such as 15-May-2016 18:30:00. I am trying to extract only rows with hours ending in :00:00, such as 15-May-2016 18:00:00, in order to work with hourly data only. Picking only every nth row does not work because certain times skip in the data, such as:
StreamData.datetime:
...
21-Apr-2016 12:00:00
21-Apr-2016 12:15:00
21-Apr-2016 12:30:00
21-Apr-2016 12:45:00
21-Apr-2016 13:00:00
21-Apr-2016 14:45:00
21-Apr-2016 15:00:00
...
This is also why I do not want to aggregate averages on hourly data, but want only the rows with datetime ending in :00:00.
Thank you!
Upvotes: 1
Views: 446
Reputation: 259
%% Your data
date = ['21-Apr-2016 12:00:00';
'21-Apr-2016 12:15:00';
'21-Apr-2016 12:30:00';
'21-Apr-2016 12:45:00';
'21-Apr-2016 13:00:00';
'21-Apr-2016 14:45:00';
'21-Apr-2016 15:00:00'];
data = (1:7)'; % example (data)
%% convert date to vector extracting minutes and second (via datenum first)
[~,~,~,~,minutes,seconds] = datevec(datenum(date,'dd-mmm-yyyy HH:MM:SS'));
%% Index zero minutes and zero seconds
zero_minutes = minutes == 0;
zero_seconds = seconds == 0;
%% Get at the hour indices (rows)
at_the_hour_rows = zero_minutes & zero_seconds;
%% Example extracting corresponding data
at_the_hour_data = data(at_the_hour_rows);
Upvotes: 1