我有两个分别列出的同一组学生的姓名列表。印刷错误很多,我一直在使用模糊匹配来链接两个列表。我在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!