首页 > 解决方案 > 距离/模糊匹配 2 列与 R 中的另外 2 列

问题描述

在我的简化示例中,我有一个包含四个不同列的数据框。我希望能够将 main_name 和 main_dob 与 secondary_name 和 secondary_dob 一起匹配。行的实际顺序无关紧要,所以如果第 3 行和第 4 行有匹配,我希望它们返回相同的值并显示那里有匹配。

以下是我的示例数据。

main_name <- c("Arthur Lee", "Robert Frost", "Sarah Doe", "Elizabeth Smith")
main_dob <- c("3/3/93", "10/21/70", "11/25/88", "4/2/92")

secondary_name <- c("David Lee", "Robert L. Frost", "Elizabeth Smith", "Mark Roger")
secondary_dob <- c("4/4/95", "10/21/70", "4/2/92", "11/25/88")

df <- data.frame(main_name,main_dob,secondary_name,secondary_dob)

我希望输出显示 Arthur Lee 最接近的匹配项是 David Lee,以及两者之间的距离,以及他们生日之间的距离。接下来,我想看看 Robert Frost 的匹配是否存在,但距离有点偏,因为 second_name 包含他的中间名,但生日帮助我验证它是同一个人。接下来,没有 Sarah Doe,所以我会显示最近距离匹配和最近生日距离。最后,我会让 Elizabeth Smith 与 Elizabeth Smith 匹配,即使它们位于两个数据中的不同行上。

我正在考虑使用 jaro-winkler (jw) 包进行距离,但我愿意接受任何想法和帮助。

标签: rmatchingfuzzy-logicstringdistjaro-winkler

解决方案


推荐阅读