我只是想知道如何计算矩阵条件的累积和。这就是我的意思:假设我们有一个矩阵,其中包含一个名为ID
的列和一个名为Value
的列,如下所示:
ID | VALUE
------------------------------
2 | 50
7 | 19
5 | 32
2 | 21
8 | 56
7 | 5
7 | 12
2 | 16
5 | 42
我希望根据ID
列计算此矩阵的累计和。这意味着累积和列(或向量)看起来像:
ID | CUMULATIVE SUM
----------------------------------
2 | 50
7 | 19
5 | 32
2 | 71
8 | 56
7 | 24
7 | 36
2 | 87
5 | 74
有办法做到这一点吗?对此的搜索并没有太多变化(我发现了与数据帧/数据表相关的东西,但是当涉及到矩阵的'条件'时我还没有找到任何东西),所以任何帮助都会不胜感激。
答案 0 :(得分:1)
有很多方法可以做到这一点,我在这里使用data.table。我稍微编辑了您的数据,只使用,
作为分隔符并删除了标题行:
R> suppressMessages(library(data.table))
R> dat <- fread(" ID , VALUE
2 , 50
7 , 19
5 , 32
2 , 21
8 , 56
7 , 5
7 , 12
2 , 16
5 , 42")
R> dat[, cumsum(VALUE), by=ID]
ID V1
1: 2 50
2: 2 71
3: 2 87
4: 7 19
5: 7 24
6: 7 36
7: 5 32
8: 5 74
9: 8 56
R>
之后,它是一个标准的分组(您可以通过多种不同方式进行分组)和每组中的累积总和。
由于分组,此处的重新排序是自动的。如果你必须保留订单,你可以。