我有两个数据帧,每个数据帧由纬度,经度和相应的ID组合而成 .
我本想做的就是:
for each_ID in df1:
for each_ID in df2:
calculate distance in miles
result_df = df1 x df2
df=data.frame(id = c('row1','row2','row3'), lat = c(47,57,67), long = c(-80,-80,-80))
df2 = data.frame(id = c('col1','col2','col3'), lat = c(47,57,67), long = c(-83,-84,-85))
我想计算df1和df2之间每个点的距离 . 我不需要计算df1中各点之间的距离 . 我希望所有内容都包含相应列名的行和列名称的矩阵 .
我环顾四周,并没有看到一个简单的方法 . 有人提供一些帮助吗?
2 回答
Grab a function for calculating distance between longs and lats:
Calculate all distances between data frames, and set to new data frame:
可能有更准确的距离计算,例如geosphere包中提供的距离计算 . 不确定您是否希望在最终帧中使用这些标签,而是根据需要进行更改此外,如果这是您想要的最终结果,您可以将此帧转换为矩阵 .
您可以使用
geosphere
包中的distm
函数,该函数默认情况下会计算Haversine距离,但如果需要,您还可以精确控制其他距离函数 . 默认情况下,距离以米为单位,但您可以通过乘以转换常数将其转换为英里 .