有什么办法可以评估两个名称之间的相似性?数据如下:
ABC ABCD
CBD CBD
ABC DEF
结果可能像
ABC ABCD (3/4=) 75%
CBD CBD (3/3=) 100%
ABC DEF (0/6=) 0%
而且,角色的顺序无关紧要
使用length
的intersect
S按分max
imum nchar
,apply
编行方式。我们可能会选择处理骗局。
# V1 V2
# 1 ABC ABCD
# 2 CBD CBD
# 3 ABC DEF
# 4 ABCCC ABCC
# 5 ABCCC ABCCC
# 6 ABCCC ABCD
f <- function(x, dupes=FALSE) {
if (dupes) {
x <- sapply(x, function(x) Reduce(paste0, unique(el(strsplit(x, "")))))
}
i <- length(do.call(intersect, unname(mapply(strsplit, x, ""))))
m <- max(sapply(x, nchar))
i/m
}
apply(d, 1, f)
# [1] 0.75 1.00 0.00 0.60 0.60 0.60
apply(d, 1, f, dupes=TRUE)
# [1] 0.75 1.00 0.00 1.00 1.00 0.75
数据:
d <- structure(list(V1 = c("ABC", "CBD", "ABC", "ABCCC", "ABCCC",
"ABCCC"), V2 = c("ABCD", "CBD", "DEF", "ABCC", "ABCCC", "ABCD"
)), class = "data.frame", row.names = c(NA, -6L))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句