考虑到年份和 ID 滞后变量

lagging a variable taking into account year and id

我有以下不平衡数据集:

id Year A
1  1    5
1  2    6
2  1    11
2  2    12
2  3    13
3  2    1
3  3    3

我想要一个变量 lagA,它真正考虑了每个观察的年份和 id,而不仅仅是向下移动列:

id Year A   lagA
1  1    5   NA
1  2    6   5
2  1    11  NA
2  2    12  11
2  3    13  12
3  2    1   NA
3  3    3   1

有什么想法吗?我尝试确保数据帧是 pf class pdata.frame 但是当我使用函数 lag(A,1) 它只是将列向下移动,从而产生不一致的结果。

我们需要按 'id' 分组,然后执行 lag

library(dplyr)
df1 %>%
     arrange(id, Year) %>% # in case not ordered by 'year'
     group_by(id) %>%
     mutate(lagA = lag(A))
# A tibble: 7 x 4
# Groups:   id [3]
#     id  Year     A  lagA
#  <int> <int> <int> <int>
#1     1     1     5    NA
#2     1     2     6     5
#3     2     1    11    NA
#4     2     2    12    11
#5     2     3    13    12
#6     3     2     1    NA
#7     3     3     3     1