这是一些示例数据。来自?raster::stack!
library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster"))
我知道你已经这样做了
mn <- mean(s)
sd <- calc(s, sd)
cv <- sd / mn
现在你想要“% change”,但你没有定义它。请编辑您的问题,并更好地解释您想要计算的内容。你想要局部改变吗(在一个单元一个单元的基础上);但如果是这样,你将如何计算百分比?或者你想要它全局(每个层/时间段一个数字)。您想比较所有时间段吗?还是??
这里还有另一种可能性,将第一层与所有其他层进行比较。也许这可以让你开始做你想做的事,或者问一个更好的问题。
x <- s[[1]] != s[[-1]]
是否有任何更改的单元格?
y <- any(x)
相对于第 1 年,细胞的总比例是多少?
cellStats(y, "mean")
#[1] 0.7923364
或相对于第 1 年的每个“年”。
cellStats(x, "mean")
# green blue
#0.6218336 0.7891218
如果你想逐年改变,你可以这样做
s1 <- s[[2:nlayers(s)]]
s2 <- s[[1:(nlayers(s)-1)]]
z <- s1 != s2
cellStats(z, "mean")
# green blue
# 0.6218336 0.7672624