使用聚合条件按“列”拆分数据

时间:2017-10-03 06:49:03

标签: r dataframe

考虑以下data.frame:

> head(dtrain)
  content_id item_age   item_ctr likes clicks no_clicks event
1   11201926   461540 0.02787456     1     24       837     0
2   11201926   462497 0.02784223     1     24       838     0
3   11201926   473215 0.02780997     1     24       839     0
4   11201926   532983 0.02777778     1     24       840     0
5   11201926   536696 0.02774566     1     24       841     0
6   11201926   545545 0.02771363     1     24       842     0

我想通过content_id拆分数据,只需要以下命令

result <- split(dtrain , f = dtrain$content_id )

但是我想只保留dtrain中的数据,其中content_id在列表1000出现(在dtrain中)。换句话说,在dtrain中存在相同的content_id超过1000次。

最后,我将按content_id拆分数据,其中每个拆分将在列表中出现1000次(因为这是聚合条件)

1 个答案:

答案 0 :(得分:3)

您可以先使用dplyr过滤数据框,只保留包含1000条或更多记录的内容组:

temp <- dtrain
    %>% group_by(content_id)
    %>% filter(n() >= 1000)

然后按原样继续:

result <- split(temp, f=temp$content_id)