2个不相等的数据帧与R中空间坐标的最佳合并?
Optimal merge of 2 unequal dataframes with spatial coordinates in R?
我需要一些帮助。我正在尝试合并具有不同列数和行数的 2 个数据帧(WIDE.2018
和 WIDE.2015
)。对不起,我不能分享数据。两者都有一组相似的空间坐标列(lon
和 lat
)。我正在尝试通过最佳独特对(例如 optimal
)或通过 nearest
与 replace=F
合并它们(我正在使用 MatchIt
的类比术语)。我只能处理找到最近距离但允许重复观察的 cbind
。
正如 Geoffrey 所提到的(thks!),我正在寻找最佳 1:1 匹配以最小化所有匹配中的欧氏距离,确保每个点在另一个点中只有一个匹配 data.frame(有些点在较长的 data.frame 中不匹配)。
library (geosphere)
D = distm(WIDE.2018[, c("lon","lat")], WIDE.2015[, c("lon","lat")])
m1<-cbind(WIDE.2018, WIDE.2015[apply(D, 1, which.min),])
提前致谢!
基于这个答案:
我认为您正在寻找匈牙利算法。这是 R 中的一个实现,它声称可以使用矩形矩阵(例如,不相等的样本大小)。
https://rdrr.io/cran/RcppHungarian/man/HungarianSolver.html
我相信所需矩阵中的权重将是点之间的距离。
我需要一些帮助。我正在尝试合并具有不同列数和行数的 2 个数据帧(WIDE.2018
和 WIDE.2015
)。对不起,我不能分享数据。两者都有一组相似的空间坐标列(lon
和 lat
)。我正在尝试通过最佳独特对(例如 optimal
)或通过 nearest
与 replace=F
合并它们(我正在使用 MatchIt
的类比术语)。我只能处理找到最近距离但允许重复观察的 cbind
。
正如 Geoffrey 所提到的(thks!),我正在寻找最佳 1:1 匹配以最小化所有匹配中的欧氏距离,确保每个点在另一个点中只有一个匹配 data.frame(有些点在较长的 data.frame 中不匹配)。
library (geosphere)
D = distm(WIDE.2018[, c("lon","lat")], WIDE.2015[, c("lon","lat")])
m1<-cbind(WIDE.2018, WIDE.2015[apply(D, 1, which.min),])
提前致谢!
基于这个答案:
我认为您正在寻找匈牙利算法。这是 R 中的一个实现,它声称可以使用矩形矩阵(例如,不相等的样本大小)。
https://rdrr.io/cran/RcppHungarian/man/HungarianSolver.html
我相信所需矩阵中的权重将是点之间的距离。