我有以下数据框:
library(dplyr)
d1 <- data_frame(
title = c("base1", "base2", "base3", "base4"),
lat = c(57.3, 58.8, 47.2, 57.8),
long = c(0.4, 3.4, 3.5, 1.2))
d2 <- data_frame(
tas = c("tas1", "tas2", "tas3", "tas4"),
Base= c ("base1", "base2", "base3", "base4"),
lat=c(54.6, 56.4, 54.2, 54.6),
long = c(1.2, 3.4, 3.5, 56.6))
我想做的是计算d2中tas和d1中title之间的英里距离。所以在d2中,tas1具有54.6纬度和1.2经度的坐标,并在“Base”列中具有“base1”。因此,我想计算54.6纬度和1.2经度与57.3纬度和0.4经度之间的距离。
我尝试使用下面详细说明的GeoDistanceInMetresMatrix函数来实现这一点,但该函数并没有给出我想要的结构。
下面的文章提供了有关GeoDistanceInMetresMatrix的一些信息。
http://eurekastatistics.com/calculating-a-distance-matrix-for-geographic-points-using-r/
这就是我想要数据看起来的样子:
df <- data_frame(
tas = c("tas1", "tas2", "tas3", "tas4"),
Base= c ("base1", "base2", "base3", "base4"),
lat=c(54.6, 56.4, 54.2, 54.6),
long = c(1.2, 3.4, 3.5, 56.6),
difference_miles = c(23, 35, 56, 23))
我整个下午都在看这个,但无法完全弄对,希望能得到任何帮助!
d2 <- data.frame(tas =c("tas1", "tas2", "tas3", "tas4"), Base= c ("base1", "base2", "base1", "base2"), lat=c(54.6, 56.4, 54.2, 54.6), long = c(1.2, 3.4, 3.5, 56.6))
- MrmolejedistGeo
函数计算两个坐标对之间的距离。只要坐标向量长度相同或彼此是偶数倍,它仍然可以工作。如果d1和d2之间没有一对一的关系,则考虑将所有数据合并到一个大型数据框中进行计算。请参见丹的答案以了解如何执行此操作。 - Dave2e