2017-07-08 108 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))