【发布时间】:2020-07-07 07:24:30
【问题描述】:
这是我的交易数据
from_id to_id date_trx week amount
<fctr> <fctr> <date> <dbl> <dbl>
6644 6934 2005-01-01 1 700
6753 8456 2005-01-01 1 600
9242 9333 2005-01-01 1 1000
9843 9115 2005-01-01 1 900
7075 6510 2005-01-02 1 400
8685 7207 2005-01-02 1 1100
... ... ... ... ...
9866 6697 2010-12-31 313 95.8
9866 5992 2010-12-31 313 139.1
9866 5797 2010-12-31 313 72.1
9866 9736 2010-12-31 313 278.9
9868 8644 2010-12-31 313 242.8
9869 8399 2010-12-31 313 372.2
我想计算每个from_ids 在每个week 上的唯一to_ids 数量:即:
data <- data %>%
group_by(week,from_id) %>%
mutate(weekly_distinct_accounts=n_distinct(to_id))
但是,计算似乎永远不会结束。这样做的有效方法是什么?我还尝试了其他功能mentioned here,但它们也无济于事
【问题讨论】:
-
可能是
aggregate(to_id ~ from_id + week, data, function(x) length(unique(x)))? -
试试
data.table:setDT(data)[, .(weekly_distinct_accounts=uniqueN(to_id), .(week,from_id)] -
感谢@GKi,这是最快的方法。