2013-08-20 50 views
1

我有大量的数据帧,包括X和Y坐标对,并且希望计算后续坐标之间的欧几里得距离(最小尺寸约为2000对坐标) - 因此,距离从行1至2,行2〜3,第3行至4等This question很好地示出了如何计算的第一和最后点轨迹数据之间的欧几里德距离,但我的数据更接近:计算R中后续位置之间的欧几里德距离

(A = c(0L,0L,0L,0L,0L,0L),T = 0:5,X = c(668L,670L,672L,674L,676L,678L),Y = c 259L,259L,260L),V = c(NA,0,0,0,0) Y“,”V“),row.names = c( NA,6L),class =“data.frame”)

似乎应该有一种方法来创建一个循环来做到这一点,但我不确定如何下标。使用dist()对于这个尺寸的数据集在计算上要求很高,并且无论如何,我也不确定如何从对角线中提取一次矩阵元素。

+0

你看了'sp'包? – Frank

回答

3

喜欢的东西

sqrt(diff(dff$X)^2 + diff(dff$Y)^2) 

应该工作。这里的关键就是把差异功能,这给连续项之间的差异在矢量

1

另一种方法,只是为了好玩:

sqrt(apply(apply(dff[,c("X","Y")], 2, diff)^2, 1, sum))