我有一个raster time-series
,值从1到36,代表10天(dekads
)的时间步长和NA值。
我需要计算average
和standard deviation
,并考虑到折合为circular
(36是一年中的最后一个折合,第一个是1)。
以下是平均值的代码(似乎可行),但我无法编写标准差的代码。 能否请您检查平均值计算代码是否产生正确的输出,并帮助我编写标准偏差的输出。
非常感谢
require(raster)
r <- raster(ncol=50, nrow=50)
s <- stack(lapply(1:length(r), function(x) setValues(r, values = sample(x = c(0:36),size = ncell(r), replace = T))))
# 0 is set to NA
s[s==0]<-NA
# function
conv <- 2*pi/36 #SET HERE THE time steps
fun1 <- function(m,na.rm=T){
x1 = Arg(mean(exp(conv*(m-1)*1i),na.rm=na.rm))
x2 = x1/conv
x3 = (x2 + 36) %% 36
return(x3)
}
# MEAN calculation
s_avg <- calc(s,fun1)
s_avg <- round(s_avg,0)
s_avg <- s_avg + 1
s_avg [s_avg==37] <- 1
s_avg
plot(s_avg)