R如何使用stackApply计算每年的季节性平均值?

问题描述 投票:0回答:2

我想计算每年而不是整个期间的季节性平均值。我将我的季节定义如下:DJF(12月至2月),MAM(3月至5月),JJA(6月至8月)和SON(9月至11月)。

[受Fredrick问题解决方案的启发,我创建了一个索引“ groups”来表示季节,然后应用了命令“ 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)

我想计算每年而不是整个期间的季节性平均值。我将我的季节定义如下:DJF(12月至2月),MAM(3月至5月),JJA(6月至8月)和SON(...

r xts zoo r-raster
2个回答
1
投票
您的脚本一切正常,除了您要生成的组(即DJF,...)。对于每个目标组,您计划用于组的索引应该为

unique


0
投票
您的示例数据
© www.soinside.com 2019 - 2024. All rights reserved.