作为R的as.yearqtr从12月开始而不是1月

时间:2015-10-22 18:02:48

标签: r time-series raster zoo

我有一个光栅时间序列作为动物园onbect创建。我能够按季度汇总,但我想要从12月到2月,3月到5月,6月到8月和9月到11月的总量。我怎么能这样做呢? 正常的R代码是:

library(raster)
library(zoo)
C <- raster(nrows=30, ncols=30)
C[] <- 1:ncell(C)
O <- raster(nrows=30, ncols=30)
O[] <- 1:ncell(O)
CO1 <- stack(C,C,C,C,O,O,O)
m <- seq(as.Date('2009-12-15'), as.Date('2010-06-15'), 'month')
CO2 <- setZ(CO1,m)
CN <- zApply(CO2, by=as.yearqtr, fun=mean)

这将产生12月,1月至3月和4月至6月的季度平均值。 我想要的是6月 - 2月,3月 - 5月,6月的平均值。

2 个答案:

答案 0 :(得分:3)

尝试:

zApply(CO2, by=round(unclass(getZ(CO2)) * 12 + 1) %/%3, fun=mean)

答案 1 :(得分:0)

您可以使用stackApply,它在概念上类似于tapply。不如zApply那么漂亮,因为设置所需的索引可能会更费力。

stackApply(CO2, c(1,1,1,2,2,2,3), fun=mean)