How to use groupsummary to group by hour-of-year
Ältere Kommentare anzeigen
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
Antworten (2)
the cyclist
am 30 Jun. 2023
0 Stimmen
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 Kommentare
Dino Bellugi
am 30 Jun. 2023
the cyclist
am 1 Jul. 2023
I think I understand. I can't test this idea on your data, because you have not uploaded it, but I believe that the following would do what you want.
First, convert your table (or make a copy) to change all of the years to be the same. (Choose a leap year, so that it has a Feb 29.)
Then do groupsummary with groupbin = "hour" on that table. MATLAB doesn't "know" that these are different years, so it includes each hour of each day (regardless of year) in the summary.
Dino Bellugi
am 2 Jul. 2023
Dino Bellugi
am 2 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.
Kategorien
Mehr zu Data Type Identification finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!