2017-12-18 212 views
1

由于数据在遗留系统中存储错误,因此我使用R和agrep()来匹配公司名称列表 - 因为数据在传统系统中存储错误 - 没有第四种常规格式,公司在同一级别上录制作为客户,这意味着每个新客户都有一个新的公司条目,这导致一家公司拥有许多不同的公司名称 - 这在很多情况下都能正常工作。与agrep匹配的模糊字符串

有时,特别是对于短字符串,我得到的 - 至少对我来说 - 奇怪的比赛,例如(ABC是第一家名称):

ABC ABAXIS Europe GmbH 

ABC ABB Europe 

ABC ABB Group 

ABC ABB Stotz Kontakt GmbH 

ABC ABM Financial News 

ABC ABN AMRO Bank NV 

ABC AC Klöser GmbH 

ABC ACCBank 

ABC ACEA S.p.A. 

使用agrep()以下参数I'm:

agrep(vector1, vector2, value = TRUE, ignore.case = FALSE, max.distance = 0.01) 

是否有任何其他方式比最大距离来调整agrep()或更好的方式来做到这一点?

预先感谢

回答

0

对于一个类似的问题,我使用本文中描述的第二种方法:http://bigdata-doctor.com/fuzzy-string-matching-survival-skill-tackle-unstructured-information-r/#comment-942

它匹配每一个与所述最相似的一个,如果有一些这当然不是最佳的寄存器误报对您而言是个问题。

此外,您可能会发现有用此功能之前和之后的名称删除空格:

trim <- function (x) gsub("^\\s+|\\s+$", "", x) #Defining function that returns string w/o leading or trailing whitespace 

我还使用了removewords()函数从“以旧换新”包。在你的情况下,删除ABC“可能是有用的。

+0

感谢您的回复。 我alredy删除空白/ whitespaces等匹配前 最相似的是不幸的是,我需要一个公司的所有类似的匹配 删除ABC并不能解决我的问题,在这种情况下它是一个有效的公司名称,并且其他公司名称也存在问题(3-5个字符) – Salfii