as.yearqtr 在 R 中从 12 月而不是 1 月开始

as.yearqtr in R starting from December instead of January

我有一个创建为动物园 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 月的季度平均值。 我想要的是十二月至二月、三月至五月、六月的平均值。

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

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

尝试:

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