我有一个非常大的数据集,我想执行以下过程进行一些分析。 原始数据是基于交易的,因此它为我提供了每个ID的增量金额。然后,我计算了每个ID的运行总计,并将它们分为小(0-100k),中(100k-1m)和大(>£1m)桶。
我要实现的是右表。我想按交易时间(月-月),规模段和累积量查看此数据。因此,例如在2017-01年前的小乐队中,我有2个ID,它们的总和为100,而到2017-03年,第一个ID的数量移至中型存储桶,因此我们删除了与此ID相关的初始数量80并将其移至中型存储桶。
我正在使用数据表执行以下操作,但是不知道是否有更好的方法来执行此操作。外观栏用于说明,因为我还希望获得一个计数栏,该栏为我提供了不同时期每个频段中ID的数量。
到目前为止,我的代码如下:
Data <- Data[, Cumulative_Sum := cumsum(Amounts_Incremental), by =.(ID)
Data <- Data[, Band := ifelse(Cumulative_Sum <= 100000, "Small", ifelse(Cumulative_Sum <= 1000000, "Medium", "Large"))]
ID Period Amounts (Incremental) Cumulative Sum Band Appearance Small Appearnace Medium Appearnace Large
1 2017-01 80 80 Small 1 0 0
1 2017-03 400 480 Medium -1 1 0
1 2017-09 500 980 Medium 0 0 0
1 2018-01 100 1080 Large 0 -1 1
2 2017-05 200 200 Medium 0 1 0
2 2017-06 4000 4200 Large 0 -1 1
2 2018-02 300 4500 Large 0 0 0
2 2018-03 200 4700 Large 0 0 0
2 2018-04 400 5100 Large 0 0 0
3 2017-01 20 20 Small 1 0 0
3 2017-05 10 30 Small 0 0 0
3 2018-01 30 60 Small 0 0 0
3 2018-03 40 100 Medium -1 1 0
3 2018-04 8 108 Medium 0 0 0
Output Small Amounts Medium Amounts Large Amounts Count Count Count
2017-01 100 0 0 2 0 0
2017-02 100 0 0 2 0 0
2017-03 20 480 0 1 1 0
2017-04 20 480 0 1 1 0
2017-05 30 680 0 1 2 0
2017-06 30 480 4200 1 1 1
2017-07 30 480 4200 1 1 1
2017-08 30 480 4200 1 1 1
2017-09 30 980 4200 1 1 1
2017-10 30 980 4200 1 1 1
2017-11 30 980 4200 1 1 1
2017-12 30 980 4200 1 1 1
2018-01 60 0 5280 1 0 2
2018-02 60 0 5580 1 0 2
2018-03 0 100 5780 0 1 2
2018-04 0 108 6180 0 1 2
2018-05 0 108 6180 0 1 2
2018-06 0 108 6180 0 1 2
2018-07 0 108 6180 0 1 2
PS:我不知道如何更好地格式化。