How to use groupsummary to group by hour-of-year
16 views (last 30 days)
Show older comments
The "groupsummary" function offers a convenient way to group variables in a table and apply functions such as computing the mean.
For example, if I want to compute the day-of-year mean of a variable named "foo" in a table "myTable" containing daily data with timestamp "date", I would use the command:
myDoyTable = groupsummary(myTable, "date","dayofyear","mean","foo");
This is great for daily data, but I am stumped in the case of hourly data.
Suppose I want to do a similar thing, but now myTable contains hourly data and date has an hourly timestamp.
Ideally I would want to use a command such as:
myDoyTable = groupsummary(myTable, "date","hourofyear","mean","foo");
Unfortunately, there is no "hourofyear" option (though there is hour of day, minute of hour, and many more).
Can anyone suggest a workaround?
Thanks,
-Dino
0 Comments
Answers (2)
the cyclist
on 30 Jun 2023
The groupbin option "hour" doesn't do what you want?
(If not, can you upload a sample of input and output data indicating what you want? I'm having a difficult time understanding.)
4 Comments
Peter Perkins
on 17 Jul 2023
Is this really "hour of year", a value that runs from 0 to 8784? In the same way that day of year is just
dt = datetime(2023,7,17,14,15,0)
doy = between(dateshift(dt,"start","year"),dt,"days") % or maybe - caldays(1)
hour of year is just
hoy = between(dateshift(dt,"start","year"),dt,"time")
hoy = floor(time(hoy),"hours"); hoy.Format = 'h'
If you add an HoY grouping variable to your table, groupsummary can group by that.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!