我在这里需要一些帮助。我正在尝试合并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.iocranRcppHungarianmanHungarianSolver.html。
我相信,所需矩阵中的权重将是点与点之间的距离。