按类别进行模糊匹配

时间:2017-01-25 10:39:12

标签: r text-mining fuzzy-search

我正在尝试使用agrep函数基于公司名称模糊匹配两个不同的数据帧。为了改善我的匹配,我想只匹配公司,如果他们位于同一个国家。

 df1:                             df2:
 Company               ISO        Company                ISO
 Aalberts Industries   NL         Aalberts               NL
 Allison               NL         Allison transmission   NL
 Allison               UK         Allison transmission   UK

我使用以下函数来匹配:

testb$test <- ""
for(i in 1:dim(testb)[1]) {x2 <- agrep(testb$name[i], testa$name, ignore.case=TRUE, value=TRUE, max.distance = Inf, useBytes = TRUE, fixed = TRUE)
                     x2 <- paste0(x2,"")
                     testb$test2[i] <- x2
}

我可以为每个国家/地区创建一个子集,而不是匹配每个子集,但这很有用。如果df1 $ ISO = df2 $ ISO,还有另一种让R只匹配公司名称的方法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用data.table包进行索引:https://www.r-bloggers.com/intro-to-the-data-table-package/

您的公司专栏似乎与agrep()一致且准确无误地匹配。例如,只有当您将max.distance设置为大于10的值时,“Aalberts Industries”才会匹配“Aalberts”。相同的字符串距离也会报告“代数”和“Alleyway”之间的匹配 - 不是非常接近所有。我建议在匹配之前清除公司列中不必要的单词。

抱歉,我会将此作为评论,但我没有所需的声誉。也许有人可以将此转换为对我的评论?