2017-12-26 17 views
1

別の列の計算値から列の値を計算しようとしています。data.table内の他の列の計算値に基づいて列のローリング合計を計算する

DT <- data.table(X = c("a","a","a", "b","b","b", "c","c","c"), 
       Y = rep(c(1,2,3),3), 
       z1 = c(10, 11,12), 
       z2 = c(1,2,3)) 

ここDTで、Iは各X.次の行の計算のための最初の行のZ1およびZ2の和である新しい列Zはすべてのために以前に計算Z +現在の行Z2から行われるべき計算します"a"の行。同様に "b"、 "c"。
"for"ループで試しましたが、成功しませんでした。 最終結果は次のようになります。

X Y z1 z2 Z 
a 1 10 1 11 
a 2 11 1 12 
a 3 12 1 13 
b 1 10 2 12 
b 2 11 2 14 
b 3 12 2 16 
c 1 10 3 13 
c 2 11 3 16 
c 3 12 3 19 
+0

NBを使用することができます私はあなたのデータは 'あなたのデモの答えを一致させるために(各= 3、C(1,2,3))' Z2 =担当者であるべきだと思います – dww

答えて

2

あなたは

DT[, Z := cumsum(z2) + z1[1], by= X] 
関連する問題