Calculate difference between values in consecutive rows by group

后端 未结 3 675
遥遥无期
遥遥无期 2020-11-22 10:14

This is a my df (data.frame):

group value
1     10
1     20
1     25
2     5
2     10
2     15 

I need to calculate difference

3条回答
  •  南笙
    南笙 (楼主)
    2020-11-22 10:44

    You can use the base function ave() for this

    df <- data.frame(group=rep(c(1,2),each=3),value=c(10,20,25,5,10,15))
    df$diff <- ave(df$value, factor(df$group), FUN=function(x) c(NA,diff(x)))
    

    which returns

      group value diff
    1     1    10   NA
    2     1    20   10
    3     1    25    5
    4     2     5   NA
    5     2    10    5
    6     2    15    5
    

提交回复
热议问题