首页 文章

R:如何将列添加到数据框中,每行中所有先前行的累积总和?

提问于
浏览
2

我有一个简单的问题,但我无法在stackoverflow上找到答案 . 也许我使用的是错误的搜索字词 . 无论如何这是我的问题:

我想在数据框中添加一列,每行包含其所有先前行的累积总和 . 例如,我有数据框X,列V1和V2 . 在这种情况下,示例中的V3是我想要创建的添加列:

X =

V1 V2  V3
1  0.5 0.5
2  2.0 2.5
3  1.9 4.4
4  0.0 4.4
5  5.1 9.5

我想要应用它的实际数据框实际上要大得多(5000行) . 任何提示或解决方案?会很好!

1 回答

  • 1

    cumsum() 函数可以解决这个问题,但由于您希望它跨越多个列,因此您需要首先获得跨行的总和 . 这可以使用 apply() 函数完成 . 假设我理解你在寻找什么,这里有一个例子:

    > set.seed(2)
    > dat <- data.frame(a=round(rnorm(10),2),b=round(rnorm(10),2),c=round(rnorm(10),2))
    > dat$cumsum <- cumsum(apply(dat,1,sum))
    > dat
           a     b     c cumsum
    1  -0.90  0.42  2.09   1.61
    2   0.18  0.98 -1.20   1.57
    3   1.59 -0.39  1.59   4.36
    4  -1.13 -1.04  1.95   4.14
    5  -0.08  1.78  0.00   5.84
    6   0.13 -2.31 -2.45   1.21
    7   0.71  0.88  0.48   3.28
    8  -0.24  0.04 -0.60   2.48
    9   1.98  1.01  0.79   6.26
    10 -0.14  0.43  0.29   6.84
    

相关问题