R 从.csv文件创建共现矩阵
我正在尝试创建一个共现矩阵,以查看哪些关键字在我的数据库中经常关联在一起 数据看起来像这样,它是一个.csv文件R 从.csv文件创建共现矩阵,r,matrix,R,Matrix,我正在尝试创建一个共现矩阵,以查看哪些关键字在我的数据库中经常关联在一起 数据看起来像这样,它是一个.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 che
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也可以做到这一点,但我一生中从未接触过它。您可以使用tidyr
(和magrittr
)包和表
函数
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"))
df哦,不,只是用你的例子。使用read.csv
。嘿,这样做很好,但问题是我问的问题不对。我让他们看起来好像每行只有2个关键词,但这个数字可以改变。有时有一个关键字,有时有四个关键字,等等。所以这里的into=c(“F1”,“F2”)
不是正确的解决方案@mrsnake而且您使用因子的行似乎也有问题,它将NA
放在矩阵的每一个地方。即使使用您提供的示例代码。我遗漏了什么吗?是的,你是对的,3个字或更多,它不能工作。然而,我启动了一个新的R会话,代码运行正常,并给出了我编写的输出。我发现这样做的方法似乎对我想要做的事情非常有效!
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