1

我有以下不平衡数据集:

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) 时,它只会将列向下移动,从而产生不一致的结果。

4

1 回答 1

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
于 2018-07-09T08:34:40.530 回答