RecordLinkage - R一个向量。不要与自我匹配

时间:2017-08-16 15:22:46

标签: r levenshtein-distance fuzzy-logic stringdist record-linkage

如果我有一个名字矢量,请说:

a = c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell")

我希望使用levenshteinSim或类似内容在此向量中获得相似性得分。但是,我不想让它得分。例如,"tom" #1可以对"tom" #3进行评分。并且不会针对"tom" #1返回"tom" #1的分数,以免自我评分。

我以前使用两个不同的向量ab完成了它。但是,如果我将其用于相同的向量,那么"tom" #1将对"tom" #1进行评分,这是我想要避免的。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以使用combn生成a的所有无序元素对:

a <- c("tom", "tommy", "alex", "tom", "alexis", "Alex", "jenny", "Al", "michell")

df <- data.frame(t(combn(a, 2)), stringsAsFactors = FALSE)
df$sim <- RecordLinkage::levenshteinSim(df$X1, df$X2)

head(df)
#    X1     X2 sim
# 1 tom  tommy 0.6
# 2 tom   alex 0.0
# 3 tom    tom 1.0
# 4 tom alexis 0.0
# 5 tom   Alex 0.0
# 6 tom  jenny 0.0