2017-08-10 75 views
0

我想用R中的dplyr包來計算條件累計和。我正在構建一個負面衝擊的儲蓄計算器。所以我想要一個累積儲蓄減去衝擊的變量。這似乎應該是相當簡單的使用滯後函數,但我似乎無法得到它的工作。使用dplyr進行條件減法的累積和

下面是一個例子:

event <- c(0,0,0,1,0) 
save <- rep(.5,5) 
## add up the savings from each prior row, then when event is one subtract 1 
output_want <- c(.5,1,1.5,1,1.5) 
df <- tibble(event,save,output_want) %>% 
    mutate(totsave = if_else(row_number() ==1, save, 0)) %>% 
    mutate(totsave = if_else(row_number() !=1, save+lag(totsave)-event, save)) 

理想我想使負儲蓄震盪是積蓄的一小部分,但想到我會用一個簡單的情況下啓動。

回答

2

如果在每個時間段你想從save矢量加上積蓄,但是從event減去衝擊,那麼你可以通過服用save-event累積和計算所需的結果:

cumsum(save-event) 
# [1] 0.5 1.0 1.5 1.0 1.5 
+0

謝謝。這很好。我也可以減去累積和的一小部分,就像這樣 'cumsum(save-event * 0.5 * cumsum(save))' 你知道爲什麼我最初使用的滯後函數不起作用嗎? – williamlief

+0

@williamlief你的帶有'lag'的版本並沒有每個累加任何東西,所以我不知道它是如何將一個時期的節省加起來的。 – josliber