数据:
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中的可用年份基本上是随机的,所以我不太确定这样做的麻烦。
答案 0 :(得分:1)
我们创建一个分组变量然后执行一个滞后
library(dplyr)
df1 %>%
group_by(id, grp = as.integer(gl(nrow(df1), 2, nrow(df1)))) %>%
mutate(diff = lag(value))