我正在尝试确定添加到给定数量的栅格单元格的位置,从最大值开始并逐渐减小。
例如,我的150,000个单元格的总和值为52,000,000;
raster1 <- raster("myvalues.asc")
cellStats(raster1,sum) = 52,000,000
我可以提取高于第95百分位数的细胞;
q95 <- raster1
q95[q95 < quantile(q95,0.95)] <- NA
cellStats(q95,sum) = 14,132,000
正如您所看到的,前5%的单元格(基于分位数学数据)返回的原始总数为'raster1'的大约1400万。
我想要做的是将总和预先确定为10,000,000(或x),然后累计求和栅格单元格,从最大值开始并向下运算,直到我有(并且可以绘制)总计为x的所有单元格
我试图将'raster1'转换为矢量,排序,累积和等,但无法将其绑定回栅格。任何帮助都非常感谢
S
答案 0 :(得分:3)
以下是您自己的答案,但重写后对其他人(自包含)更有用。我还将%in%
更改为<
,这应该更有效率。
库(光栅)
r <- raster(nr=100, nc=100)
r[] = sample(ncell(r))
rs <- sort(as.vector(r), decreasing=TRUE)
r_10m <- min( rs[cumsum(rs) < 10000000] )
test <- r
test[test < r_10m ] <- NA
cellStats(test, sum)
答案 1 :(得分:1)
无法找到编辑按钮.....
经过一个小时的磨头,这就像我需要的东西;raster1v <- as.vector(raster1)
raster1vdesc <- sort(raster1v, decreasing=T)
raster1_10m <- raster1vdesc[cumsum(raster1vdesc)<10000000]
test <- raster1
test[!test%in%raster1_10m] <- NA
plot(test)
cellStats(test,sum) = 9,968,073
似乎有用,也许,我不知道。任何更优雅的东西都是理想的