使用dplyr进行条件减法的累积和

问题描述:

我想用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)) 

理想我想使负储蓄震荡是积蓄的一小部分,但想到我会用一个简单的情况下启动。

如果在每个时间段你想从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