Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从.csv文件创建共现矩阵_R_Matrix - Fatal编程技术网

R 从.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

我正在尝试创建一个共现矩阵,以查看哪些关键字在我的数据库中经常关联在一起

数据看起来像这样,它是一个.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也可以做到这一点,但我一生中从未接触过它。

您可以使用
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