我试图创建一个共生矩阵,以查看我的数据库中经常关联的关键字。
数据看起来像这样,它是一个.csv文件。
id, keywords
1, apple;pear
2, apple;cherry
3, pear;cherry
4, apple;cherry
我想获得类似的东西
apple pear cherry
apple 0 1 2
pear 1 0 1
cherry 2 1 0
然后目标是使用d3.js来显示矩阵。
我已在R
标记中发布此内容,因为我之前已经在某些课程中使用了它,所以我不是一个完整的新手。我在寻找解决方案的同时也可以使用python来做到这一点,但我的生活中从未触及它。
答案 0 :(得分:1)
您可以使用tidyr
(和magrittr
)软件包和table
函数。
library(tidyr)
library(magrittr)
df <- data.frame(id = 1:4, keywords = c("apple;pear", "apple;cherry", "pear;cherry", "apple;cherry"))
df2 <- df %>% separate(keywords, sep = ";", into = c("F1", "F2"))
这是在行/列名称中具有正确的级别。
df2$F1 %<>% factor()
df2$F2 %<>% factor()
df2$F1 <- factor(df2$F1, levels = unique(c(levels(df2$F1), levels(df2$F2))))
df2$F2 <- factor(df2$F2, levels = unique(c(levels(df2$F1), levels(df2$F2))))
您现在可以使用表格(它不对称,因此请使用+
)
> table(df2$F1, df2$F2) + table(df2$F2, df2$F1)
apple pear cherry
apple 0 1 2
pear 1 0 1
cherry 2 1 0