2017-12-05 37 views
0

私はこのデータフレームを使用して計算を行います。行を減算して合計値を返します。

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減算したい - その結果、行AAにおける第2の値に追加... 0。 ... 1 + 3 = 4 ...その後、4 - 0 ...とAAで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) 

任意のアイデアは本当に感謝 !あなたが累積和の違いを実行したい

答えて

3

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

私は先頭に0を追加し、BBの最後elmentを落としました。編集

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 

:あなたは、私はそれをテストするi番目のBBに

をsubstracting前に、i番目の要素で結果をしたいので それを行うための別の方法(LMOのおかげで)です:

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

のように行うことができます私の悪い部分は正しいです –

+0

これらの操作は連想的であり、可換性があるので、少し簡単な 'cumsum(aa - c(0、head(bb、-1)))'を実行することもできます。 – lmo

+0

素晴らしい!手伝ってくれてどうもありがとう! – Art

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 
+0

ありがとうございます!これは別の視点を与える。 – Art