减去行然后求和值

Subtract rows then sum values

我有这个数据框,我想在其中执行一些计算。

aa = c (1,3,1,0,0,1,6,1,14,3,0)
bb = c (0,0,5,0,0,1,6,0,2,15,1)
ee = rbind( aa,bb)
df = as.data.frame (ee)

首先,我想从 aa 行的第一个值中减去 bb 行中的第一个值 ... 1 - 0 ... 然后将结果添加到 aa 行中的第二个值 ... 1 + 3 = 4 ... 然后是 4 - 0 ... 然后是 4 + 1 = 5 等等 ...

期望的结果是:

cc = c (1,4,5,0,0,1,6,1,15,16,1)
ff = rbind( cc,bb)
df1 = as.data.frame(ff)

非常感谢任何想法!

您想计算​​累计和的差值:

cc <- cumsum(aa) - cumsum(c(0, bb[-length(bb)]))

我在开头加了一个0,去掉了bb的最后一个元素。因为你想在第 i 个元素减去第 i 个 bb

之前的结果

我测试了一下:

aa = c (1,3,1,0,0,1,6,1,14,3,0)
bb = c (0,0,5,0,0,1,6,0,2,15,1)
cc <- cumsum(aa) - cumsum(c(0, bb[-length(bb)]))
cc
[1]  1  4  5  0  0  1  6  1 15 16  1

编辑: 另一种方法(感谢 lmo)是:

cc <- cumsum(aa - c(0, head(bb, -1)))

你可以这样做

for(i in 1:10){
  aa[i+1] <- (aa[i] - bb[i]) + aa[i+1]
}

aa

[1]  1  4  5  0  0  1  6  1 15 16  1