在列中查找起始值并递增 1 直到去年

Finding start value in a column and increment by 1 until the last year

我试图找到虚拟变量的起始值并将其递增 1。

这是一个示例数据:

id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4) 
date = c(2010,2011,2012,2013,2014,2010,2011,2012,2013,2014,2010,2011,2012,2013,2014,2010,2011,2012,2013,2014) 
income = c(100,20,45,50,70,45,66,21,45,234,124,5325,645,23234,2352,456,24234,34656,5633,13524) 
participation = c(0,0,0,1,0,1,1,1,0,0,1,0,1,0,1,0,0,0,1,1) 
df <- data.frame(id,date,income,participation)

为了描述这些数据,我为每个人的收入和参与创建了一个纵向数据,日期为 2010 年到 2014 年 activity。我试图了解参与对他们的加班收入的影响。我正在描绘的是以下内容:

id = c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4) 
date = c(2010,2011,2012,2013,2014,2010,2011,2012,2013,2014,2010,2011,2012,2013,2014,2010,2011,2012,2013,2014) 
income = c(100,20,45,50,70,45,66,21,45,234,124,5325,645,23234,2352,456,24234,34656,5633,13524) 
participation = c(0,0,0,1,2,1,2,3,4,5,1,2,3,4,5,0,0,0,1,2) 
df <- data.frame(id,date,income,participation)

老实说,我迷路了,因为参与价值已经是一个虚拟变量。有没有办法通过小组参与和约会来产生增量?任何想法都会有所帮助。谢谢!

按'id'分组后,得到'participation'的cummax,然后对其进行累加

library(dplyr)
df %>% 
    group_by(id) %>% 
    mutate(participation = cumsum(cummax(participation)))