我正在尝试计算一个数据框中源向量和比较向量之间的Jaccard相似度。
首先,创建一个带有names_字段(字符串向量)的数据框。使用dplyr的mutate函数,创建names_vec,这是一个列表列,其中每行现在是一个向量(向量中的每个元素都是一个字母)。
然后,创建一个新的数据框,其中包含列jaccard_sim,该列应计算Jaccard相似度。
source_vec <- c('a', 'b', 'c')
df_comp <- tibble(names_ = c("b d f", "u k g", "m o c"),
names_vec = strsplit(names_, ' '))
df_comp_jaccard <- df_comp %>%
dplyr::mutate(jaccard_sim = length(intersect(names_vec, source_vec))/length(union(names_vec, source_vec)))
jaccard_sim 中的所有值都为零。然而,如果我们运行类似于下面这样的内容,我们将得到第一个条目正确的 Jaccard 相似度 0.2:
a <- length(intersect(source_vec, df_comp[[1,2]]))
b <- length(union(source_vec, df_comp[[1,2]]))
a/b