我有一个简单的问题,但我无法在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行)。任何提示或解决方案?会很好!
答案 0 :(得分: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