使用R'数据表'进行以下计算

时间:2018-11-28 10:15:26

标签: r data.table

我有一个非常大的数据集,我想执行以下过程进行一些分析。 原始数据是基于交易的,因此它为我提供了每个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:我不知道如何更好地格式化。

enter image description here

0 个答案:

没有答案