问题描述
我有两列具有约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'))
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