【问题标题】:Fuzzy matching by category按类别进行模糊匹配
【发布时间】:2017-01-25 10:39:12
【问题描述】:

我正在尝试使用 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 只匹配公司名称?谢谢!

【问题讨论】:

    标签: r text-mining fuzzy-search


    【解决方案1】:

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

    您的公司列似乎太不相似,无法与agrep() 一致且准确地匹配。例如,仅当您将 max.distance 设置为大于 10 的值时,“Aalberts Industries”才会匹配“Aalberts”。相同的字符串距离也会报告“Algebra”和“Alleyway”之间的匹配——根本不是很接近。我建议在匹配之前清除公司列中不必要的单词。

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

    【讨论】:

      猜你喜欢
      • 2019-12-28
      • 2014-07-16
      • 2010-10-29
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-19
      相关资源
      最近更新 更多