R从表中创建出现的矩阵

时间:2018-03-19 12:13:34

标签: r matrix

我有一个数据集,其中包含用户列表和相应的文章,如:

A_ID<-c(111,116,111,112,112,114,116,113,114,111,114,116,115,116)
U_ID<-c(221,221,222,222,223,223,223,224,224,225,225,225,226,226)
df_u_a<-data.frame(U_ID,A_ID)

我想构建一个矩阵,向我展示每个用户有多少次出现,如

enter image description here

如果我有重复项,我希望获得相同的输出,例如,以下内容应计入用户226访问过文章116,而不是像用户226访问过文章116两次:

A_ID<-c(116,116)
U_ID<-c(226,226)
df_u_a<-data.frame(U_ID,A_ID)

我尝试了函数矩阵,但似乎我只是得到一个表:

m<-as.matrix(df_u_a)
m

也许我mont正确使用矩阵函数或者我应该使用另一个函数。你可以请一些人建议如何在R中获得矩阵,如上图所示。

2 个答案:

答案 0 :(得分:3)

使用table后,您只需转换为logical,即:

myTab <- table(df_u_a)
myTab[] <- as.integer(as.logical(myTab))

答案 1 :(得分:0)

以下是使用reshape2::dcast的单行解决方案:

library(reshape2);
dcast(df_u_a, U_ID ~ A_ID, length);
#  U_ID 111 112 113 114 115 116
#1  221   1   0   0   0   0   1
#2  222   1   1   0   0   0   0
#3  223   0   1   0   1   0   1
#4  224   0   0   1   1   0   0
#5  225   1   0   0   1   0   1
#6  226   0   0   0   0   1   1