【发布时间】: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