R 使用SAC的共现矩阵?

R 使用SAC的共现矩阵?,r,plyr,R,Plyr,我有以下数据框“x” id,item,volume a,c1,2 a,c2,3 a,c3,2 a,c4,1 a,c5,4 b,c6,6 b,c1,2 b,c3,1 b,c2,6 b,c4,4 c,c2,5 c,c8,6 c,c9,2 d,c1,1 e,c3,7 e,c2,3 e,c1,2 e,c9,5 e,c4,1 f,c1,7 f,c3,1 第一列是客户的id,第二列是客户购买的物品的id,第三列是购买的物品的编号。我试图创建一个共现矩阵,它是一个有8行和8列的正方形矩阵,8是不同项目的数量

我有以下数据框“x”

id,item,volume
a,c1,2
a,c2,3
a,c3,2
a,c4,1
a,c5,4
b,c6,6
b,c1,2
b,c3,1
b,c2,6
b,c4,4
c,c2,5
c,c8,6
c,c9,2
d,c1,1
e,c3,7
e,c2,3
e,c1,2
e,c9,5
e,c4,1
f,c1,7
f,c3,1
第一列是客户的id,第二列是客户购买的物品的id,第三列是购买的物品的编号。我试图创建一个共现矩阵,它是一个有8行和8列的正方形矩阵,8是不同项目的数量

n = length(unique(x$cid))

这可以通过SAC范式来实现吗?对于每个id,我需要通过为每个组合添加+1来更新上述矩阵。例如,对于项目为c1、c2、c3、c4、c6的用户“b”,对于所有用户,矩阵中第2、3、4和6列的第一行应增加1,依此类推。我无法将其转换到这个框架中。非常感谢您的帮助。

正如@joran提到的,您不清楚自己真正想要什么。但如果我理解正确(可能不正确),我想提出一条替代路线。我想你想要一个物品到物品的矩阵,数字代表物品共享一个客户的次数

如果是,则:

library(igraph)
library(tnet)
id_item<-cbind(
i=c(1,1,2,2,2,2,2,3,4,5,5,5,6,6,7,8),  #items
p=c(1,2,1,2,3,4,5,2,3,4,5,6,6,7,8,8))  #customers
item_item<-projecting_tm(id_item, method="sum")
item_item <- tnet_igraph(item_item,type="weighted one-mode tnet")
itemmat<-get.adjacency(item_item,attr="weight")
itemmat  #8x8 martrix of items to items

#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,]    0    2    1    0    0    0    0    0
#[2,]    2    0    1    1    2    0    0    0
#[3,]    1    1    0    0    0    0    0    0
#[4,]    0    1    0    0    0    0    0    0
#[5,]    0    2    0    0    0    1    0    0
#[6,]    0    0    0    0    1    0    0    0
#[7,]    0    0    0    0    0    0    0    1
#[8,]    0    0    0    0    0    0    1    0
库(igraph)
图书馆(tnet)

id_itemrehsape2提供“acast”,这可能是您想要的:

> acast(x, id~item,value.var='volume')
  c1 c2 c3 c4 c5 c6 c8 c9
a  2  3  2  1  4 NA NA NA
b  2  6  1  4 NA  6 NA NA
c NA  5 NA NA NA NA  6  2
d  1 NA NA NA NA NA NA NA
e  2  3  7  1 NA NA NA  5
f  7 NA  1 NA NA NA NA NA

重塑2::dcast生成一个数据帧,如果这更方便的话。

虽然R问题在这里非常受欢迎,但我想知道这是否需要更多的统计经验而不是编程经验;你看到那张照片了吗?检查关于选择要在哪个网站上提问的部分。。如果你认为可以,让我知道,我会删除我的评论。如果您认为这样更好,请标记您的帖子,以引起版主的注意,并要求迁移。@sarnold我不同意,我认为这纯粹是一个关于以编程方式重新排列数据的问题。我怀疑stats.SE的人会把它迁移到这里。至于OP,你的问题有几个方面还不清楚。您建议希望共现矩阵中的行与客户(id)对应,但只有6个id,您说需要8x8矩阵。你是说6x8矩阵吗?另外,矩阵的条目应该是0/1,还是体积列的计数?@Joran:谢谢你的反馈。最终结果就是我想要的。但是无法在我的ubuntu版本上安装软件包。我会再闲逛的嗯,真烦人。。希望你能成功!