创建新字段以显示R中两列之间的stringdist?

问题描述

我有两列具有约20k行名(并非都是唯一的),我想在两列之间逐行进行比较。我还想比较长度,并获得长度与LV距离的百分比差异,以便根据每行的匹配程度开始对名称进行分组。

子集数据示例:

df <- data.frame(R_Number = c(1:10),A = c('Microsoft','Microsoft Corporation','Microsoft Corp','Microsoft inc','Microsoft','Microsoft INC','Microsoft CORP','MSFt','Microsoft'),B = c('Microsoft','MSFT','MSFT Corp','Apple inc','Microsoft corp','AMZN','Amazon'))

用于计算col行之间的差异的stringdist函数示例:

test_2 <- sapply(dist.methods,function(lv) stringdist(df$A,df$B,method=lv))

我得到了一个输出表,但是我无法直观地看到它并获得一个新的字段/表,该字段/表显示每行的LV距离并显示其对应名称

所需的输出

A     |       B      | LV_disT

MSFT      Microsoft    8

解决方法

您可能不需要*在这里应用(尽管我可能会错误地解释您想要的输出)。

df$distance <- stringdist(df$A,df$B,method = "lv")

输出:

 R_Number                     A              B distance
        1             Microsoft      Microsoft        0
        2 Microsoft Corporation           MSFT       20
        3        Microsoft Corp      MSFT Corp        8
        4         Microsoft inc      Apple inc        9
        5             Microsoft      Microsoft        0
        6         Microsoft INC  Microsoft INC        0
        7        Microsoft CORP Microsoft corp        4
        8                  MSFt      Microsoft        7
        9         Microsoft inc           AMZN       13
       10             Microsoft         Amazon        8
,

如果函数NewAssembly未向量化,则该方法应该起作用:

stringdist