gpt4 book ai didi

r - 如何从栅格堆栈中选择最频繁的值(模式)

转载 作者:行者123 更新时间:2023-12-02 17:36:07 25 4
gpt4 key购买 nike

我在栅格堆栈中有四个层,我想在这四个层中的每个像元中选择最频繁的值。

这是数据集和代码:

require(raster)
a <- raster(matrix(c(12,11,11,
NA,11,11,
11,11,13),nrow=3))

b <- raster(matrix(c(12,12,12,
NA,12,12,
14,12,13),nrow=3))

c <- raster(matrix(c(13,9,13,
NA,13,13,
13,NA,13),nrow=3))

d <- raster(matrix(c(10,10,10,
NA,10,10,
10,10,10),nrow=3))

stk <- stack(a,b,c,d)

我想知道是否有可能用类似的代码来做到这一点?

which.freqV <- function(x, ...){
???
}

max <- stackApply(stk,1,which.freqV,na.rm=NULL)

最佳答案

我不得不在我的脚本中这样做(计算堆栈的模式)并找到了完美的东西:

  Mode <- function(x) {
ux <- unique(x)
ux=ux[!is.na(ux)]
ux[which.max(tabulate(match(x, ux)))]
}
layers_mode=calc(stack, fun=Mode)

现在,如果您想计算每个单元格的模式频率,请使用:

  ###calculate proportion of layers that have mode value as measure of uncertainty
Mode_count <- function(x) {
ux <- unique(x)
ux=ux[!is.na(ux)]
mode=ux[which.max(tabulate(match(x, ux)))]
sum(x==mode, na.rm=T)
}
layers_mode_freq=calc(stack, fun=Mode_count)

关于r - 如何从栅格堆栈中选择最频繁的值(模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26726028/

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