计算R

时间:2018-08-03 15:34:47

标签: r dplyr coordinates mutate

我有个人的位置,数据框如下:

 ID       Lat       Lon        Distance
 1        51.5184   -0.1382
 1        51.5147   -0.1532
 2        51.5184   -0.1342
 2        51.5147   -0.1522
 2        51.5537   -0.1556
 ...      ...       ...

,我想计算每个人的移动距离。我不太确定如何计算数据框中个人的点组距离。

我知道之前发布过一些类似的问题,例如:How can I calculate the distance between latitude and longitude along rows of columns in R?我发现我们的情况有所不同。当我使用此功能时:

mutate(Distance = c(NA, distHaversine(cbind(Lon[-n()], Lat[-n()]), cbind(Lon[-1], Lat[-1]))))

在我的工作中,我发现错误subscript out of bounds,这表示ID的长度不同。就像我的数据显示的那样,我有2个ID:1和3个ID:2,这导致了这个问题。如果有人可以告诉我如何修改此功能以适合我的情况,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

mutate(df, Distance=distHaversine(cbind(Lon, Lat),cbind(lag(Lon),lag(Lat))))

对不起,我的错-忘记了distHaversine需要矩阵。