我有一个数据框A,格式如下:
user item
101 1
101 2
101 4
102 2
103 3
103 4
... ...
我想创建2个数据框B和C
user itemList
101 c(1,2,4)
102 c(2)
103 c(3,4)
item userList
1 c(101)
2 c(101,102)
3 c(103)
4 c(101,103)
答案 0 :(得分:1)
您可以将dplyr包用于此
library(dplyr)
user.grp <- df %.%
group_by(user) %.%
summarise(itemList=paste(item,collapse=','))
#output
user.grp
# user itemList
#1 101 1,2,4
#2 102 2
#3 103 3,4
类似地,您可以将group_by中的项目用于按项目分组。
如果要求将分组数据作为数字向量,那么我们需要将整个数据存储在列表中。
library(plyr)
dlply(df,.(user),function(df){df$item})
#output
#$`101`
#[1] 1 2 4
#$`102`
#[1] 2
#$`103`
#[1] 3 4