R中条件矩阵的累积和

时间:2017-07-09 22:28:58

标签: r matrix cumulative-sum

我只是想知道如何计算矩阵条件的累积和。这就是我的意思:假设我们有一个矩阵,其中包含一个名为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

有办法做到这一点吗?对此的搜索并没有太多变化(我发现了与数据帧/数据表相关的东西,但是当涉及到矩阵的'条件'时我还没有找到任何东西),所以任何帮助都会不胜感激。

1 个答案:

答案 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> 

之后,它是一个标准的分组(您可以通过多种不同方式进行分组)和每组中的累积总和。

由于分组,此处的重新排序是自动的。如果你必须保留订单,你可以。