代码之家  ›  专栏  ›  技术社区  ›  Sharif Amlani

R中跨列的模糊匹配

  •  0
  • Sharif Amlani  · 技术社区  · 6 年前

    我如何衡量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 回复  |  直到 6 年前
        1
  •  2
  •   MarBlo    6 年前

    包裹里有 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