我有个人的位置,数据框如下:
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,这导致了这个问题。如果有人可以告诉我如何修改此功能以适合我的情况,我将不胜感激。谢谢。
答案 0 :(得分:3)
mutate(df, Distance=distHaversine(cbind(Lon, Lat),cbind(lag(Lon),lag(Lat))))
对不起,我的错-忘记了distHaversine
需要矩阵。