我有以下不平衡数据集:
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 类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