how to cumulatively add values in one vector in R

前端 未结 5 1601
耶瑟儿~
耶瑟儿~ 2020-12-01 18:54

I have a data set that looks like this

id  name    year    job    job2
1   Jane    1980    Worker  0
1   Jane    1981    Manager 1
1   Jane    1982    Manage         


        
5条回答
  •  [愿得一人]
    2020-12-01 19:46

    Here is a base solution using within and ave. We assume that the input is DF and that the data is sorted as in the question.

    DF2 <- within(DF, {
        seq = ave(id, id, job, FUN = seq_along)
        job2 = (job == "Manager") + 0
        cumu_job2 = ave(job2, id, job, FUN = cumsum)
    })
    subset(DF2, job != 'Boss' | seq == 1, select = - seq)
    

    REVISION: Now uses within.

提交回复
热议问题