计算R中的一个滞后差异

时间:2017-07-08 15:55:20

标签: r

数据:

d <- data.frame(year= c(1,2,5,6,1,2,7),id=c(1,1,1,1,2,2,2),value=1:7)

year id value
1    1   1
2    1   2
5    1   3
6    1   4
1    2   5
2    2   6
7    2   7

期望的输出:

year id value
1    1   NA
2    1   1
5    1   NA
6    1   1
1    2   NA
2    2   1
7    2   NA

基本上,我希望在同一个id中有一个滞后差值,如果不可用则丢失。困难在于每个id中的可用年份基本上是随机的,所以我不太确定这样做的麻烦。

1 个答案:

答案 0 :(得分:1)

我们创建一个分组变量然后执行一个滞后

library(dplyr)
df1 %>%
   group_by(id, grp = as.integer(gl(nrow(df1), 2, nrow(df1)))) %>%
   mutate(diff = lag(value))