2017-12-18 210 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