我想创建滞后变量的几列是由两个条件分组。
以下是数据集:
df <- data.frame(id = c(rep(1,4),rep(2,4)), tp = rep(1:4,2), x1 = 1:8, x2 = 2:9, x3 = 3:10, x4 = 4:11)
> df
id tp x1 x2 x3 x4
1 1 1 1 2 3 4
2 1 2 2 3 4 5
3 1 3 3 4 5 6
4 1 4 4 5 6 7
5 2 1 5 6 7 8
6 2 2 6 7 8 9
7 2 3 7 8 9 10
8 2 4 8 9 10 11
我想延迟x1, x2, x3, x4
,它们被id
和tp
分组,并创建新变量x1_lag1, x2_lag1, x3_lag1, x4_lag1
,如下所示:
> df
id tp x1 x2 x3 x4 x1_lag1 x2_lag1 x3_lag1 x4_lag1
1 1 1 1 2 3 4 2 3 4 5
2 1 2 2 3 4 5 3 4 5 6
3 1 3 3 4 5 6 4 5 6 7
4 1 4 4 5 6 7 NA NA NA NA
5 2 1 5 6 7 8 6 7 8 9
6 2 2 6 7 8 9 7 8 9 10
7 2 3 7 8 9 10 8 9 10 11
8 2 4 8 9 10 11 NA NA NA NA
如何做到这一点?
1条答案
按热度按时间sr4lhrrt1#
您的结果似乎根本没有按
tp
分组。它按id
分组,并在id
分组中按tp
排序。一般来说,“lag”是一个从上一行取值的变量,而你想标记为“lag”的列则从下一行取值,所以我们使用
lead
函数。