如何在R

时间:2019-02-28 03:14:12

标签: r dataframe percentage

我想在由数据框中的名称组成的两个字符串/两列之间获得百分比字符匹配。 如果使用sqldf可以实现以下目的,则将有所帮助。 下面是我要在数据框的其中一列中实现的示例。

FAYE与FAYE2的比较

输出将是90%

要使用的以下公式:

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

谢谢

1 个答案:

答案 0 :(得分: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