我有一个如下所示的 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
- 创建一个新变量 $recent_active (= sum $active 与此 cust_id 的所有行,其中 $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 次。
样本数据在这里