【发布时间】:2015-07-20 05:12:21
【问题描述】:
我有一个名为predictors 的数据框,其列为session_id 和item_id。
我想计算属于一个特定会话的所有项目的计数(在整个数据框中)。
我使用过这样的聚合方法:
popularity <- aggregate(predictors$item_id,
FUN = function(items) {(table(predictors$item_id[predictors$item_id %in% items]))},
by = list(predictors$session_id))
它基本上计算属于一个特定会话的所有项目的计数列表(通过predictors)。
例如如果有两条记录为session1 - item1 和session1 - item2,我想获取item1 和item2 对session1 的计数列表(在整个predictors 数据帧中)。 (类似于session1 - (10, 20),当item1 在数据集中出现10 次时,等等)。
我使用上面的aggregate 方法得到这个。但我想使用data.table 让它更快地工作。
到目前为止,我已经尝试使用 data.table 如下:
predictors_data.table <- data.table(predictors)
popularity <- predictors_data.table[ , list(p = table(predictors_data.table$item_id[items_list %in% item_id])),
by = c('session_id')]
但我只计算第一个项目,而不是一个特定会话的所有项目。
【问题讨论】:
-
请展示一个小的示例数据,以及想要的结果。另外我建议从新的Introduction to data.table HTML 小插图开始。它应该只需要大约 10 分钟...
标签: r data.table aggregate