2017-10-19 42 views
1

我有一個帶有國家名稱列的數據框。即使是同一個國家,這些名字也會有所不同,例如小寫字母,缺少一些字母,一些額外的字母和兒子等。通過最佳字符串匹配將數據框中的字符串變量分組以創建子集

所以我需要在類似的模式下對它們進行分組。例如,我有兩個屬於同一類別的觀察值:(「巴西」,「巴西」),我需要將它們放在一起。我不能手工做這件事,因爲整個數據框是由大約10 000個觀測數據組成的。

在做出那些在一個類別中相似的觀察之後,我需要從這些類別中創建一些子集。

是否有可能的解決方案將類別名稱分組到一個類別中,然後將這些類別的子集與數據框中的其他列進行組合?

我試圖使用沒有成功的agrep函數。

number <- c(1:6) 
country <- c("Brasil","brazil","Costa Rica","costarrica","suiza","Holanda") 
example <- data.frame(number,country) 

agrupamiento <- for (i in 1:nrow(example)){ 
    agrep(example$country[i], example$country, 
    max.distance = 0.1,ignore.case = TRUE) 
} 
+0

見我的方法,如果你需要,你能接受什麼 – Wen

回答

1

使用stringdist::phonetic

library(stringdist) 
example$ph=phonetic(example$country) 
example 
    number country ph 
1  1  Brasil B624 
2  2  brazil B624 
3  3 Costa Rica C236 
4  4 costarrica C236 
5  5  suiza S200 
6  6 Holanda H453 

當時的工作對你的樣本數據集,我們將其

out <- split(example,f = example$ph) 
out 
$B624 
    number country ph 
1  1 Brasil B624 
2  2 brazil B624 

$C236 
    number country ph 
3  3 Costa Rica C236 
4  4 costarrica C236 

$H453 
    number country ph 
6  6 Holanda H453 

$S200 
    number country ph 
5  5 suiza S200