小编A L*_*A L的帖子

如何匹配来自两个数据集的模糊匹配字符串?

我一直在研究一种基于不完美字符串连接两个数据集的方法,例如公司名称.在过去,我必须匹配两个非常脏的列表,一个列表有名称和财务信息,另一个列表有名称和地址.没有唯一的ID匹配!假设清洁已经应用,并且可能有类型和插入.

到目前为止,AGREP是我发现的最接近的工具.我可以在AGREP包中使用levenshtein距离,它测量两个字符串之间的删除,插入和替换的数量.AGREP将返回距离最小的字符串(最相似).

但是,我一直无法从单个值转换此命令以将其应用于整个数据帧.我粗略地使用了for循环来重复AGREP函数,但是必须有一个更简单的方法.

请参阅以下代码:

a<-data.frame(name=c('Ace Co','Bayes', 'asd', 'Bcy', 'Baes', 'Bays'),price=c(10,13,2,1,15,1))
b<-data.frame(name=c('Ace Co.','Bayes Inc.','asdf'),qty=c(9,99,10))

for (i in 1:6){
    a$x[i] = agrep(a$name[i], b$name, value = TRUE, max = list(del = 0.2, ins = 0.3, sub = 0.4))
    a$Y[i] = agrep(a$name[i], b$name, value = FALSE, max = list(del = 0.2, ins = 0.3, sub = 0.4))
}
Run Code Online (Sandbox Code Playgroud)

fuzzy-search r string-matching fuzzy-comparison

21
推荐指数
2
解决办法
1万
查看次数