【问题标题】:Check if all letters in Small-String are contained in Large-String [duplicate]检查小字符串中的所有字母是否都包含在大字符串中[重复]
【发布时间】:2018-01-28 10:44:45
【问题描述】:

我正在尝试编写一些代码来确定一个小字符串中的字母是否包含在 R 中的一个较大的字符串中。然后将以百分比返回准确性。

我在 StackOverflow (check if all characters of one string exist in another string in r) 上找到了以下内容,但提供的代码将平均值计算为唯一重叠数除以唯一字母数。 即它不允许重复的字母

s1 <- "ABBDEFGHIZ"
s2 <- "ABBDEFGHIJ"

compare <- function(s1, s2) {
  c1 <- unique(strsplit(s1, "")[[1]])
  c2 <- unique(strsplit(s2, "")[[1]])
  length(intersect(c1,c2))/length(c1)
}

compare(s1,s2)
[1] 0.8888889

理想情况下,上述代码应返回 0.9 的值,因为匹配的字母是 9/10 而不是 8/9。

任何建议将不胜感激。

【问题讨论】:

  • 这样的功能已经存在。试试RecordLinkage::levenshteinSim(s1, s2)
  • 谢谢索托斯。我曾使用过其他指标,例如 JW,但发现它们存在缺陷。这个 levenshteinSim 在某些情况下有效 - 但是,在检查我的一些数据时。我遇到了以下问题:

标签: r string-matching textmatching


【解决方案1】:

类似这样的:

compare <- function(s1, s2) {
  c1 <- strsplit(s1, "")[[1]]
  c2 <- strsplit(s2, "")[[1]]
  x=sum(c1%in%c2)
  x/length(unique(c(c1,c2)))
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-08
    • 2015-01-04
    • 2014-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多