plyr计算相对聚合

时间:2013-08-22 13:24:03

标签: r dataframe plyr

我有一个看起来像这样的data.frame:

> head(activity_data)
ev_id cust_id active previous_active start_date
1 1141880     201      1               0 2008-08-17
2 4927803     201      1               0 2013-03-17
3 1141880     244      1               0 2008-08-17
4 2391524     244      1               0 2011-02-05
5 1141868     325      1               0 2008-08-16
6 1141872     325      1               0 2008-08-16
  • 每个cust_id

    • 每个ev_id

      • 使用此cust_id创建一个新变量$ recent_active(=所有行的总和$ $,其中$ start_date> [this_row] $ start_date - 10)

我正在努力使用ddply来做这件事,因为我的拆分分组是。(cust_id)我希望返回带有cust_id和ev_id的行

这是我试过的

ddply(activity_data, .(cust_id), function(x) recent_active=sum(x[this_row,]$active))

如果ddply不是一个选项,你会推荐其他有效的方法。我的数据集有大约2亿行,我需要每行大约10-15次。

示例数据为here

1 个答案:

答案 0 :(得分:0)

您实际上需要在此处使用两步法(并且在使用以下代码之前还需要将日期转换为日期格式)

ddply(activity_date, .(cust_id), transform, recent_active=your function) #Not clear what you are asking regarding the function

ddply(activity_date, .(cust_id,ev_id), summarize,recent_active=sum(recent_active))