gpt4 book ai didi

r - 如何计算栅格堆栈的变化百分比?

转载 作者:行者123 更新时间:2023-12-03 08:53:04 24 4
gpt4 key购买 nike

我有一个土地覆盖 map 的栅格堆栈(年度时间序列),我想计算变化的百分比。我找到了this question ,但我不清楚。有什么想法如何做到这一点?

假设我的栅格堆栈名为r_stk,目前我计算的唯一统计数据是sdcv

关于如何计算百分比变化有什么想法吗?

r_stk_sd<-calc(r_stk, fun=sd)
r_stk_cv<-r_stk_sd/r_stk_Mean

最佳答案

这是一些示例数据。来自 ?raster::stack!

library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster"))

我知道你已经这样做了

 mn <- mean(s)
sd <- calc(s, sd)
cv <- sd / mn

现在您想要“%更改”,但您没有定义它。请编辑您的问题,并更好地解释您想要计算的内容。您是否想要进行本地更改(逐个单元地进行);但如果是这样,你会如何计算百分比?或者您想要全局的(每一层/时间段一个数字)。您想对所有时间段进行相互比较吗?或者??

这里还有另一种可能性,将第一层与所有其他层进行比较。也许这可以让你开始做你想做的事,或者提出更好的问题。

x <- s[[1]] != s[[-1]]

单元格有变化吗?

y <- any(x)

相对于第一年,细胞发生变化的总比例是多少?

cellStats(y, "mean")
#[1] 0.7923364

或者相对于第 1 年的每个“年”。<​​/p>

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

关于r - 如何计算栅格堆栈的变化百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57690544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com