我有以下不平衡数据集:
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)时,它只是将列向下移动,从而导致结果不一致。
答案 0 :(得分:2)
我们需要按'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