如何在R中使用sqldf获得两个字符串之间的百分比字符匹配

问题描述 投票:0回答:1

我想在我的数据帧中的两个字符串/两列之间获得百分比字符匹配。如果使用sqldf可以实现以下目标,那将会很有帮助。下面是我想在数据框的一个列中实现的示例。

FAYE与FAYE2相比

产量将是90%

以下公式:

总字符数(加上第1和第2个字符串的长度)= 9个匹配的字符乘以2除以总字符=(4 x 2)/ 9 ***我们将匹配的字符乘以2,因为有2个字符串8/9 = 88.88%或90%

谢谢

r dataframe percentage
1个回答
1
投票

我们从问题中的示例中假设我们要确定第一个字符串是否是第二个字符串的子字符串,反之亦然,如果是,则报告它们的长度比率,否则报告0。此外,示例中的长度比率为100 * 4/5 = 80%,而不是问题中所示的90%。

# test data
DF <- data.frame(string1 = c("FAYE", "FAYE2", "X"), 
                 string2 = c("FAYE2", "FAYE", "FAYE"), stringsAsFactors = FALSE)

library(sqldf)

sqldf("select *, 
  max(100.0 * (instr(string2, string1) > 0) * length(string1) / length(string2),
      100.0 * (instr(string1, string2) > 0) * length(string2) / length(string1))
      percent from DF")

赠送:

  string1 string2 percent
1    FAYE   FAYE2      80
2   FAYE2    FAYE      80
3       X    FAYE       0
© www.soinside.com 2019 - 2024. All rights reserved.