将15分钟数据汇总到每小时 [英] Aggregate15 minute data to hourly
问题描述
我有一个看起来像这样的数据框:
I have a data frame that looks like this:
Timedate TotalSolar_MW
20 2013-06-01 04:45:00 13.0
21 2013-06-01 05:00:00 41.7
22 2013-06-01 05:15:00 81.8
23 2013-06-01 05:30:00 153.0
24 2013-06-01 05:45:00 270.7
25 2013-06-01 06:00:00 429.3
26 2013-06-01 06:15:00 535.4
Timedate;是 POSIXlt
和 Total_Solar;是数字
。从6月1日0:00到6月24日24:00的时间间隔为15分钟。
"Timedate" is POSIXlt
, and "Total_Solar" is numeric
. The time steps are in 15 minute intervals from June 1, 0:00 to June 24, 24:00.
现在我要汇总
季度每小时数据到每小时步骤,例如2013-06-01 06:00:00 934.8MW(81.8MW + 153.0MW + 270.7MW + 429.3MW;从05:15至06:00)
Now I want to aggregate
the quarter hourly data to hourly steps e.g. 2013-06-01 06:00:00 934.8MW (81.8MW + 153.0MW + 270.7MW + 429.3MW; from 05:15 to 06:00)
我尝试了以下方法:
Sum <-aggregate(Total_Solar_Gesamt$TotalSolar_MW,
list(as.POSIXlt(Total_Solar_Gesamt$Timedate)$hour), FUN=sum)
但是它返回整个数据帧的每小时汇总数据,并为我提供了一个具有24行的新data.frame以及每小时的总MW。
But it returns the aggregated hourly data of the whole data frame and gives me a new data.frame with 24 rows and the summed up MW for every hour.
如何更改结构,仅从每季度25分钟减少到一个小时间隔?我尝试了for循环,但这也没有用。 子集
也不适合我。
How can I change the structure, only to reduce from a quarter hourly to an hourly interval? I tried a for loop but this also didn't work. Also subset
didn't work for me.
推荐答案
时间序列,建议您使用 xts
软件包进行操作,例如 hourly.apply
:
When working with time series, I suggest you work with xts
package for this, and for example hourly.apply
:
library(xts)
dat.xts <- xts(Total_Solar_Gesamt$TotalSolar_MW,
as.POSIXct(otal_Solar_Gesamt$Timedate))
hourly.apply(dat.xts,sum)
更一般使用 period.apply
(等价的 lapply
),例如,每2小时汇总一次数据,您可以以下:
More general you can use period.apply
which is (lapply
equivalent) , for example to aggregate your data each 2 hours you can do the following:
ends <- endpoints(zoo.data,'hours',2)
period.apply(dat.xts,ends ,sum)
这篇关于将15分钟数据汇总到每小时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!