2017-07-08 84 views
2

数据滞后差异:计算一个中的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

我们创建一个分组变量,然后做一个滞后

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