Borrar filtros
Borrar filtros

How to use groupsummary to group by hour-of-year

11 visualizaciones (últimos 30 días)
Dino Bellugi
Dino Bellugi el 30 de Jun. de 2023
Respondida: Peter Perkins el 17 de Jul. de 2023
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

Respuestas (2)

the cyclist
the cyclist el 30 de Jun. de 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 comentarios
Dino Bellugi
Dino Bellugi el 2 de Jul. de 2023
Thanks, that's clever! I will give it a try and let you know..
Dino Bellugi
Dino Bellugi el 2 de Jul. de 2023
Here is the data, BTW, apologies for not uploading it earlier. I'm interested in the hour of year mean for column AP, namely "Fch4_f_1_1_1". I had to chop off the data file after a few years, due to size limitations. Feel free to take it for a spin, cyclist! Thanks again, -d.

Iniciar sesión para comentar.


Peter Perkins
Peter Perkins el 17 de Jul. de 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)
dt = datetime
17-Jul-2023 14:15:00
doy = between(dateshift(dt,"start","year"),dt,"days") % or maybe - caldays(1)
doy = calendarDuration
197d
hour of year is just
hoy = between(dateshift(dt,"start","year"),dt,"time")
hoy = calendarDuration
4742h 15m 0s
hoy = floor(time(hoy),"hours"); hoy.Format = 'h'
hoy = duration
4742 hr
If you add an HoY grouping variable to your table, groupsummary can group by that.

Categorías

Más información sobre Tables en Help Center y File Exchange.

Productos


Versión

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by