【问题标题】:Grouping string variables from a dataframe by best string match to make subsets通过最佳字符串匹配对数据帧中的字符串变量进行分组以生成子集
【发布时间】:2017-10-19 22:44:04
【问题描述】:

我有一个包含国家名称列的数据框。即使它们是同一个国家,这些名字的书写方式也不同,例如,小写字母不同,缺少一些字母,一些额外的字母等等。

所以我需要将它们归为相似的模式。例如,我有两个属于同一类别的观察结果: ("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)
}

【问题讨论】:

  • 看我的方法,如果是你需要的可以接受

标签: r string agrep


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-24
    • 2019-09-02
    • 2021-12-15
    • 1970-01-01
    • 2021-07-21
    • 2016-12-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多