2015-10-06 72 views
0

假設我有一個非常大的數據表,一列其是「ManufacturerName」。數據沒有統一輸入,所以非常混亂。例如,有可能是這樣的意見:合併數據表因子水平中的R

ABC Inc 
ABC, Inc 
ABC Incorporated 
A.B.C. 
... 
Joe Shmos Plumbing 
Joe Shmo Plumbing 
... 

我找R中自動化的方式來嘗試,並考慮類似的名稱作爲一個因子水平。我已經學會了手動執行此操作的語法,例如:

levels(df$ManufacturerName) <- list(ABC=c("ABC", "A.B.C", ....), JoeShmoPlumbing=c(...)) 

但我試圖想到一個自動化解決方案。顯然這不會是完美的,因爲我無法預測數據表中的每種類型的排列。但也許可以搜索因子水平,去掉標點/特殊字符,並根據常見的第一個詞創建關卡。或者其他任何想法。謝謝!

+1

data.table指的是使用所述data.table包的特定R類別。據我所知,你的問題無關,與它(在這種情況下,應取出標籤上的文章)。 – Frank

+0

我問如何做一個數據表,怎麼什麼都沒有做與數據表?我不知道這個軟件包是否有更多與我的問題相關的內容。我猜如果沒有,我們可以把它看作一個數據框架。 –

+0

好的。很難說沒有一個可重複的例子。 – Frank

回答

0

窺視stringdist包。對於初學者來說,你可以做這樣的事情:

library(stringdist) 

x <- c("ABC Inc", "ABC, Inc", "ABC Incorporated", "A.B.C.", "Joe Shmos Plumbing", "Joe Shmo Plumbing") 
d <- stringdistmatrix(x) 
# 1 2 3 4 5 
# 2 1    
# 3 9 10   
# 4 6 7 15  
# 5 16 16 16 18 
# 6 15 15 15 17 1 

如需更多幫助,請參閱?stringdistmatrix或模糊匹配,近似串匹配,字符串距離函數,並agrep做StackOverflow上搜索。