as.yearqtr从12月开始,而不是从1月开始
我创建了一个光栅时间序列作为一个动物园。我可以汇总季度平均数,但我需要12月至2月、3月至5月、6月至8月和9月至11月的合计数。请问我怎样才能做到这一点? 正常R代码为:as.yearqtr从12月开始,而不是从1月开始,r,time-series,raster,zoo,R,Time Series,Raster,Zoo,我创建了一个光栅时间序列作为一个动物园。我可以汇总季度平均数,但我需要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,
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)
库(光栅)
图书馆(动物园)
C您可以使用stackApply
,它在概念上类似于tapply
。不像zApply
那样灵巧,因为设置所需的索引可能会更费力
stackApply(CO2, c(1,1,1,2,2,2,3), fun=mean)
尝试:
示例代码应该是可复制的,这意味着应该提供运行它所需的所有输入。我将代码扩展了一位,以使其可复制,它还需要所有库语句。谢谢RobertH。事实上,这个例子很有规律。实际数据集缺少几个月,我不想对此进行插值。例如,如果一年中只有12月的数据,我希望它返回12月的平均值,1月至2月,这与12月基本相同。我不理解您的回答stackApply
实际上与zApply
相同。哪一个更容易取决于数据的组织方式
zApply(CO2, by=round(unclass(getZ(CO2)) * 12 + 1) %/%3, fun=mean)