MATLAB: Hourly and 6-hourly average of data in timeable

6-hourly averagehourly averageMATLABmeantimetablevarfun

How would I take an hourly and 6-hourly average of this data?
IM1TT =
2899×2 table
Date & Time IM1 Stress
____________________ __________
31-May-2010 14:50:00 NaN
31-May-2010 15:00:00 NaN
31-May-2010 15:10:00 6.9
31-May-2010 15:20:00 2.1
31-May-2010 15:30:00 6.3
31-May-2010 15:40:00 5.2
31-May-2010 15:50:00 NaN
31-May-2010 16:00:00 NaN
31-May-2010 16:10:00 3.2
31-May-2010 16:20:00 NaN

Best Answer

If you want the rolling average, use smoothdata, with 'movmean' as the method and (e.g.) hours(6) as the window. If you want non-overlapping hourly/6-hourly averages, use retime. There will be two different ways to use retime, as hourly averaging is built-in:
retime(tt,'hourly','mean')
whereas you'll want to specify the time vector or timestep for the 6-hour averages. If you just specify the timestep, the 6-hour bins start from the start of your data:
retime(tt,'regular','mean','TimeStep',hours(6))
or
retime(tt,datetime(2010,5,31,12,0,0):hours(6):<whatever end time>,'mean')