减去行然后求和值

时间:2017-12-05 10:24:17

标签: r dataframe sum row subtraction

我有这个数据框,我想进行一些计算。

@echo off
setlocal enabledelayedexpansion
FOR /F "delims== tokens=1,*" %%a in ('type "sample.ini"') DO ( set pathvar=%%b
  echo !pathvar!
)

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

期望的结果是:

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)

任何想法真的很感激!

2 个答案:

答案 0 :(得分:3)

您想要执行累积总和的差异:

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

我在开头添加了一个0并删除了bb的最后一个元素。因为你想要在第i个元素之前得到结果,然后减去ith 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)))

答案 1 :(得分:0)

你可以这样做

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