gpt4 book ai didi

r - R中邻居的空间数据/计算指标

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

我有 (xBin, yBin, value) 形式的 2D 空间数据。例如:

DT = data.table(x=c(rep(1,3),rep(2,3),rep(3,3)),y=rep(c(1,2,3),3),value=100*c(1:9))

对于每个箱,我想计算所有相邻箱的变量“值”之和。如果一个 bin 的两个索引 - x 和 y 都在当前 bin 的一个单位内,则该 bin 被视为邻居

例如对于 x=2, y=2,我要计算

valueNeighbors(x=2,y=2) = value(x=1,y=1)+value(1,2)+value(1,3)
+value(2,1)+value(2,3)
+value(3,1)+value(3,2)+value(3,3)

我的真实数据有 ~1,000^2 个 bin,我怎样才能有效地做到这一点?

最佳答案

也许有光栅

X <- matrix(1:20, 4)
r <- raster(X)
r
agg <- as.matrix(focal(r,matrix(1,3,3),sum, pad = T, padValue = 0))
agg

[,1] [,2] [,3] [,4] [,5]
[1,] 14 33 57 81 62
[2,] 24 54 90 126 96
[3,] 30 63 99 135 102
[4,] 22 45 69 93 70

对于大型数据集,哪种方法更快?

X <- matrix(1:1000000, 1000)
S <- matrix(NA, nrow(X), ncol(X))
r <- raster(X)

system.time(
as.matrix(focal(r,matrix(1,3,3),sum, pad = T, padValue = 0))
)
user system elapsed
0.39 0.08 0.47

对于 1000x1000 矩阵,我无法使用 Winsemius 提出的解决方案(Win 7 x64 8GB RAM)在合理的时间内得到结果

关于r - R中邻居的空间数据/计算指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22553069/

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