R中跨列的模糊匹配

Fuzzy Match Across Columns in R

我如何衡量名称在 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 行是相同的名称,即使拼写错误,第四行完全不同。

作为输出,我想创建第三列来描述名称之间的相似程度或returns某种布尔值以指示可以进行模糊匹配。

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