【发布时间】:2013-07-24 17:43:20
【问题描述】:
跟进我之前的question with the same title,我有一个长期的次小时数据,我想以各种方式汇总数据。我想根据一天中的时间进行聚合,但也需要聚合组合,例如,day-type-hourly(即周日凌晨 1 点、周日凌晨 2 点等)。另一个例子是:周末或工作日每小时。
下面的示例显示了我所做的两种聚合。我已经做到了。所以我最终得到了两个动物园对象。我接下来要做的是将聚合合并到原始数据中,这样我就可以比较聚合的错误。这就是我目前卡住的地方。
请注意,我不使用the previous question 中的解决方案,因为我想要聚合的灵活性。
这是显示我到目前为止尝试过的 sn-p。任何帮助将不胜感激。
library(zoo)
Lines <- "Index,light.kw
2013-06-14 13:00:00,3.436
2013-06-14 13:15:00,3.327
2013-06-14 13:30:00,3.319
2013-06-14 13:45:00,3.308
2013-06-14 14:00:00,3.458
2013-06-14 14:15:00,3.452
2013-06-14 14:30:00,3.445
2013-06-14 14:45:00,3.469
2013-06-14 15:00:00,3.468
2013-06-14 15:15:00,3.427
2013-06-14 15:30:00,3.168
2013-06-14 15:45:00,2.383
2013-06-15 13:00:00,0.555
2013-06-15 13:15:00,0.555
2013-06-15 13:30:00,0.555
2013-06-15 13:45:00,0.555
2013-06-15 14:00:00,0.555
2013-06-15 14:15:00,0.555
2013-06-15 14:30:00,0.555
2013-06-15 14:45:00,0.719
2013-06-15 15:00:00,0.976
2013-06-15 15:15:00,0.981
2013-06-15 15:30:00,1.116
2013-06-15 15:45:00,0.59"
con <- textConnection(Lines)
z <- read.zoo(con, header=TRUE, sep=",",
format="%Y-%m-%d %H:%M:%S", FUN=as.POSIXct)
close(con)
index.hourly = format(index(z), "%H")
z.hourly = aggregate(z, index.hourly, mean)
z.hourly
merge(z,z.hourly)
index.dayhour = format(index(z), "%w %H")
z.dayhour = aggregate(z, index.dayhour, mean)
z.dayhour
merge(z,z.dayhour)
【问题讨论】:
-
如何通过与原始数据合并来控制聚合误差?
-
您可能希望这样的代码能够工作,但我怀疑它可能需要构建一个中间列:
merge(z,z.hourly, by.x=format(index(z),"%H") );merge(z,z.dayhour, by.x=format(index(z), "%w %H") ) -
@agstudy 不是为了“控制错误”,我只是想在原始数据和聚合之间进行并排比较,这样我就可以使用聚合作为原始数据。
-
@DWin 谢谢,我根据这个建议开发了一个解决方案。