我有两个分别列出的同一组学生的姓名列表。印刷错误很多,我一直在使用模糊匹配来链接两个列表。我在99%以上的国家和地区都使用agrep和类似的语言,但是遇到了以下基本问题:如何匹配(例如)“ Adrian Bruce”和“ Bruce Adrian”的形式? Levenshtein编辑距离不适用于此特定情况,因为它计算替换次数。

这肯定是一个非常普遍的问题,但是我找不到用于解决它的任何标准R软件包或例程。我想我缺少明显的东西……???

最佳答案

好吧,一种相当简单的方法是交换单词并再次匹配...

y=c("Bruce Almighty", "Lee, Bruce", "Leroy Brown")
y2 <- sub("(.*) (.*)", "\\2 \\1", y)

agrep("Bruce Lee", y)  # No match
agrep("Bruce Lee", y2) # Match!

09-18 15:51