我有一个数据框,其中的列名称为国家/地区。这些名字的编写方式不同,即使它们属于同一个国家,例如,在较低的上层案例,一些字母缺失,一些额外的字母和儿子上有差异。
所以我需要在类似的模式中对它们进行分组。例如,我有两个属于同一类别的观察结果:(" Brasil"," brazil")我需要将它们放在一起。我无法手工完成这项工作,因为整个数据框由~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 :(得分:1)
使用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
然后,我们拆分它
{{1}}