返回R中给定观察半径内的属性

时间:2014-11-24 07:57:49

标签: r coordinates spatial sp

新手R程序员努力为大数据集添加空间组件(> 1500 obs)

给出一个列表:观察,相应的x / y点(不是纬度/经度)和属性;如何编写一个算法来返回变量的总和" Z"对于所讨论的观察的给定半径(10)内的所有观察。我需要为每次观察做到这一点。

简化数据标题如下:

OBS      X        Y          Z**
A       56.55     -289.65  
B       52.59     -287.82   
C       58.34     -284.58     

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:3)

关键是一次使用mapply() 函数应用于 m 多个向量 - 这里:{{1}的X和Y分量1}}。哪个功能?可以为data.frame中距离“锚点”(我们在所有条目上运行)最多Z的所有观察添加data.frame变量。

radius

请注意,当然每个点的> set.seed(1) > foo <- data.frame(X=runif(100),Y=runif(100),Z=runif(100)) > radius <- 0.5 > result <- mapply(function(X,Y,Z) sum(foo$Z[(foo$X-X)^2+(foo$Y-Y)^2<=radius^2]),foo$X,foo$Y) > head(cbind(foo,result)) X Y Z result 1 0.2655087 0.6547239 0.2675082 24.99153 2 0.3721239 0.3531973 0.2186453 30.51512 3 0.5728534 0.2702601 0.5167968 28.15519 4 0.9082078 0.9926841 0.2689506 12.10058 5 0.2016819 0.6334933 0.1811683 22.50695 6 0.8983897 0.2132081 0.5185761 19.05273 本身都在其半径中计算。如果您不想这样,则需要减去Z

查看foo$Z