【问题标题】:Optimal merge of 2 unequal dataframes with spatial coordinates in R?R中空间坐标的2个不相等数据帧的最佳合并?
【发布时间】:2020-08-26 04:22:23
【问题描述】:

我需要一些帮助。我正在尝试合并具有不同列数和行数的 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),])

提前致谢!

【问题讨论】:

  • 您可能需要在此处进行更好的描述。如果您试图为 2018 年的每个点找到 2015 年最接近的点,2015 年的多个点是否可以映射到单个点是 2018 年,反之亦然?或者您是否试图找到最佳的 1:1 匹配,以最小化所有匹配中的欧几里德距离,确保每个点在另一个 data.frame 中只有一个匹配项(有些点在较长的 data.frame 中不匹配)?跨度>
  • 你好,第二个选项是我要找的。​​span>

标签: r merge matching coordinate-systems array-merge


【解决方案1】:

基于这个答案:

Best match between two sets of points

我认为您正在寻找匈牙利算法。这是 R 中的一个实现,它声称可以使用矩形矩阵(例如,不等的样本大小)。

https://rdrr.io/cran/RcppHungarian/man/HungarianSolver.html

我相信所需矩阵中的权重是点之间的距离。

【讨论】:

    猜你喜欢
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2017-12-30
    相关资源
    最近更新 更多