2012-01-17 58 views
2

我有一个动物园的时间序列如下:截断动物园时间序列最近10分钟

>> head(ww) 
(11/22/08 11:37:00) (11/22/08 12:07:00) (11/22/08 12:22:00) (11/22/08 12:37:00) 
      0.087114   0.055422   0.055250   0.059483 
(11/22/08 12:52:00) (11/22/08 13:07:00) 
      0.057896   0.061808 

正如你所看到的,时间是11:37,12:07,12:22等我会喜欢将这些时间更改为十分钟的整数倍 - 例如XX:10,XX:20。在这种情况下,11:37会变成11:40,12:07会变成12:10,12:22会变成12:20。

我已经找到了如何将其聚集到最近分钟:

wholemin <- function(x) trunc(x, units="minutes") 
result = aggregate(r, wholemin, head, 1) 

但我不能用trunc聚集到超过秒,分钟,小时等什么等

应该如何我去做这个?

为了便于示例中,dput(head(ww)输出低于:

structure(c(0.087114, 0.055422, 0.05525, 0.059483, 0.057896, 
0.061808), index = structure(c(14205.4840277778, 14205.5048611111, 
14205.5152777778, 14205.5256944444, 14205.5361111111, 14205.5465277778 
), format = structure(c("m/d/y", "h:m:s"), .Names = c("dates", 
"times")), origin = structure(c(1, 1, 1970), .Names = c("month", 
"day", "year")), class = c("chron", "dates", "times")), class = "zoo") 

回答

4

尝试这种情况:

to10 <- function(tt) trunc(tt + as.numeric(times("00:05:00")), units = "00:10:00") 
aggregate(z, to10, mean) 

并查看?trunc.times?aggregate.zoo的例子。

+0

谢谢。这就是我一直在寻找的。你可能想指出'read.zoo()'默认情况下将所有因素都视为因子,因此将数据转换为数字确实有帮助。 – 2013-03-18 18:54:58

+0

不适合我。例如,这给了我数字数据和索引:'str(read.zoo(text =“1 1”))''。 – 2013-03-18 20:48:29