r-给定一系列用户和他们在数据帧中观看的电影,我如何对用户观看的所有电影进行分组



因此,我有一个数据帧,包含userid和movieid,其中每一行代表一个用户和他观看的电影。类似于:

userid    movieid
882359    81
882359    926
882359    1349
881235    27

我想要的是

userid     movieid
882359     c(81,926,1349)
881235     c(27)

我怎样才能做到这一点?数据库相当大(800万行(,最后我想将其转换为二进制RatingMatrix。感谢您的帮助。

您可以使用data.table:

library(data.table)
setDT(df)
df[, .(films = paste(movieid, collapse = ",")), by = "userid"]
userid       films
1: 882359 81,926,1349
2: 881235          27

如果您更喜欢存储到list而不是字符向量中:

df[, .(films = list(movieid)), by = "userid"]
userid          films
1: 882359   81, 926,1349
2: 881235             27

(看起来输出相同,但类型不相同(

来自base Raggregate选项

aggregate(cbind(films = movieid) ~ userid, df, FUN = I)

相关内容

最新更新