Нечеткое совпадение по столбцам в R - PullRequest
1 голос
/ 12 июля 2020

Как я могу измерить степень схожести имен в r? Другими словами, степень, в которой может быть выполнено нечеткое совпадение.

Например, я работаю с фреймом данных, который выглядит следующим образом:

Name.1 <- c("gonzalez", "wassermanschultz", "athanasopoulos", "armato")
Name.2 <- c("gonzalezsoldevilla", "schultz", "anthanasopoulos", "strain")

df1 <- data.frame(Name.1, Name.2)
df1
            Name.1             Name.2
1         gonzalez gonzalezsoldevilla
2 wassermanschultz            schultz
3   athanasopoulos    anthanasopoulos
4           armato             strain

Это Из данных ясно, что строки 1 и 2 достаточно похожи, чтобы быть уверенным, что имя совпадает. Строка 3 имеет то же имя, хотя написано с ошибкой, а четвертая строка совершенно другая.

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

1 Ответ

2 голосов
/ 12 июля 2020

В пакете stringdist есть функция stingsim, которая дает вам число от 0 до 1 для сходства между строками.

Name.1 <- c("gonzalez", "wassermanschultz", "athanasopoulos", "armato")
Name.2 <- c("gonzalezsoldevilla", "schultz", "anthanasopoulos", "strain")
library(stringdist)

df1 <- data.frame(Name.1, Name.2)
df1$similar <- stringsim(Name.1, Name.2)
df1
#>             Name.1             Name.2   similar
#> 1         gonzalez gonzalezsoldevilla 0.4444444
#> 2 wassermanschultz            schultz 0.4375000
#> 3   athanasopoulos    anthanasopoulos 0.9333333
#> 4           armato             strain 0.1666667
...