使用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
谢谢。这很好。我也可以减去累积和的一小部分,就像这样 'cumsum(save-event * 0.5 * cumsum(save))' 你知道为什么我最初使用的滞后函数不起作用吗? – williamlief
@williamlief你的带有'lag'的版本并没有每个累加任何东西,所以我不知道它是如何将一个时期的节省加起来的。 – josliber