R 不完全字符串匹配

R 不完全字符串匹配,r,R,假设我有两列名字。第一列中的所有名称都在第二列中,但顺序是随机的,有些名称并不完全匹配。因此,也许在一个专栏中有约翰·史密斯的名字,在第二个专栏中有约翰·史密斯或约翰·史密斯的名字。有没有一种相当简单的“最佳匹配”方式 给出如下数据: df<-data.frame(x=c('john doe','john smith','sally struthers'),y=c('John Smith','John_smith','JonSmith')) 然后,您需要的是agrep: > agr

假设我有两列名字。第一列中的所有名称都在第二列中,但顺序是随机的,有些名称并不完全匹配。因此,也许在一个专栏中有约翰·史密斯的名字,在第二个专栏中有约翰·史密斯或约翰·史密斯的名字。有没有一种相当简单的“最佳匹配”方式

给出如下数据:

df<-data.frame(x=c('john doe','john smith','sally struthers'),y=c('John Smith','John_smith','JonSmith'))
然后,您需要的是
agrep

> agrep(df$x.fix[2], df$y.fix)
[1] 1 2 3

有关更复杂的混淆字符串,请参见。

+1以了解
tolower()
gsub()
,找出在levenshtein距离中可能被过度计算的内容。如果您的列数超过了名字和姓氏(例如,您也有出生日期和地址等),并且希望找到可能匹配的行,查看
记录链接
包。
> agrep(df$x.fix[2], df$y.fix)
[1] 1 2 3