在R中添加两个坐标的距离列 [英] Add a column of distances of two coordinates in R
本文介绍了在R中添加两个坐标的距离列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个这样的数据框:
I have a data frame like that:
id value lat1 lng 1 lat2 lng2 dist
124 50.4 -13.2423 -46.2342 -13.2423 -46.2342 ???
537 34.2 -13.2434 -46.2331 -13.2423 -46.2342 ???
891 42.0 -13.2445 -46.2389 -13.2423 -46.2342 ???
如何使dist
成为点(lat1,lng1)到点(lat2,lng2)的距离(以米为单位)?
How can I make dist
be the distance in meters from point (lat1, lng1) to point (lat2, lng2)?
推荐答案
您可以将apply
与Imap
软件包中的gdist
函数一起使用:
You could use apply
with the gdist
function from the Imap
package:
library(Imap)
df = data.frame(id=c(124, 537, 891),
value=c(50.4, 34.2, 42.0),
lat1=c(-13.2423, -13.2434, -13.2445),
lng1=c(-46.2342, -46.2331, -46.2389),
lat2=c(-13.2423, -13.2423, -13.2423),
lng2=c(-46.2342, -46.2342, -46.2342))
df$dist = apply(df, 1, function(x) gdist(x["lng1"], x["lat1"],
x["lng2"], x["lat2"], units="m"))
df
# id value lat1 lng1 lat2 lng2 dist
# 1 124 50.4 -13.2423 -46.2342 -13.2423 -46.2342 0.0000
# 2 537 34.2 -13.2434 -46.2331 -13.2423 -46.2342 170.3595
# 3 891 42.0 -13.2445 -46.2389 -13.2423 -46.2342 564.5390
这篇关于在R中添加两个坐标的距离列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文