【发布时间】:2020-01-31 12:39:06
【问题描述】:
我想计算每年的季节性平均值,而不是整个期间的平均值。我将我的季节定义如下:DJF(12 月至 2 月)、MAM(3 月至 5 月)、JJA(6 月至 8 月)和 SON(9 月至 11 月)。
受Fredrick 问题解决方案的启发,我创建了一个代表季节的索引“组”,然后我应用了命令“stackApply”,但这个命令计算了整个期间的平均季节值。我解释说,获得的最终图层仅包含 4 个栅格,但就我而言,我想计算“每年的季节性平均值,因此每年必须有 4 个栅格,并且栅格堆栈总共应该有 136 个栅格。
在我的代码下面
感谢您的帮助
library(raster)
set.seed(123)
r <- raster(ncol=10, nrow=10)
r_brick <- brick(sapply(1:408, function(i) setValues(r, rnorm(ncell(r), i, 3))))
dim(r_brick)
dates <- seq(as.Date("1982-01-01"), as.Date("2015-12-31"), by="month")
months <- format(dates, "%Y-%m")
groups <- function(x) {
d <- as.POSIXlt(x)
ans <- character(length(x))
ans[d$mon %in% c(11,0:1)] <- "DJF"
ans[d$mon %in% 2:4] <- "MAM"
ans[d$mon %in% 5:7] <- "JJA"
ans[d$mon %in% 8:10] <- "SON"
ans
}
data.frame(dates, groups(dates))
r_brick.s <- stackApply(r_brick, indices=groups(dates), fun=mean,na.rm=TRUE)
nlayers(r_brick.s)
【问题讨论】: