通过最佳字符串匹配对数据帧中的字符串变量进行分组以生成子集

时间:2017-10-19 22:44:04

标签: r string agrep

我有一个数据框,其中的列名称为国家/地区。这些名字的编写方式不同,即使它们属于同一个国家,例如,在较低的上层案例,一些字母缺失,一些额外的字母和儿子上有差异。

所以我需要在类似的模式中对它们进行分组。例如,我有两个属于同一类别的观察结果:(" 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)
}

1 个答案:

答案 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}}