Группировка строковых переменных из фрейма данных по наилучшему совпадению строк для создания подмножеств

У меня есть датафрейм с колонкой с названиями стран. Эти имена пишутся по-разному, даже если они, например, в одной и той же стране, есть различия в верхнем и нижнем регистре, некоторые буквы отсутствуют, некоторые дополнительные буквы и сын.

Поэтому мне нужно сгруппировать их в одинаковые шаблоны. Например, у меня есть два наблюдения, относящихся к одной и той же категории: ("Бразилия","Бразилия"), которые мне нужно собрать. Я не могу сделать это вручную, потому что весь фрейм данных состоит из ~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 ответ

Решение

Работая для вас образец данных с помощью 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
Другие вопросы по тегам