[英]Grouping string variables from a dataframe by best string match to make subsets
我有一個包含國家名稱列的數據框。 例如,即使它們是同一個國家,這些名稱的書寫方式也不同,大小寫不同,缺少一些字母,一些額外的字母和子代。
所以我需要將它們分組在相似的模式中。 例如,我有兩個屬於同一類別的觀察結果:(“巴西”,“巴西”),我需要將它們放在一起。 我無法手動執行此操作,因為整個數據框由約 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)
}
使用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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.