如何在 R 数据框中创建滞后列?


要在一个 R 数据框中创建滞后列,我们可以使用 `transform` 函数。

例如,如果我们有一个名为 `df` 的数据框,其中包含一个名为 `C` 的列,并且我们想要基于 `C` 在 `df` 中创建一个滞后列,那么我们可以使用下面给出的命令:

transform(df,Lag_C=c(C[-1],NA))

示例 1

下面的代码片段创建一个示例数据框:

Open Compiler
x<-rnorm(20) df1<-data.frame(x) df1

创建了如下数据框:

       x
1  -0.58699645
2  -1.74183976
3  -0.80306205
4  -0.80224690
5   0.01596175
6  -0.36427931
7  -0.33449380
8   1.62647476
9  -1.71252529
10  0.02802091
11  1.27800967
12  0.41098805
13 -1.46857510
14 -0.76261265
15  0.16337484
16 -0.75678517
17 -0.26163702
18  0.75312452
19  0.40915108
20 -2.47741638

要创建 x 的滞后列,请将以下代码添加到上面的代码片段中:

Open Compiler
x<-rnorm(20) df1<-data.frame(x) transform(df1,Lagged_x=c(x[-1],NA))

输出

如果你将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

       x         Lagged_x
1  -0.58699645  -1.74183976
2  -1.74183976  -0.80306205
3  -0.80306205  -0.80224690
4  -0.80224690   0.01596175
5   0.01596175  -0.36427931
6  -0.36427931  -0.33449380
7  -0.33449380   1.62647476
8   1.62647476  -1.71252529
9  -1.71252529   0.02802091
10  0.02802091   1.27800967
11  1.27800967   0.41098805
12  0.41098805  -1.46857510
13 -1.46857510  -0.76261265
14 -0.76261265   0.16337484
15  0.16337484  -0.75678517
16 -0.75678517  -0.26163702
17 -0.26163702   0.75312452
18  0.75312452   0.40915108
19  0.40915108  -2.47741638
20 -2.47741638   NA

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

示例 2

下面的代码片段创建一个示例数据框:

Open Compiler
y<-rpois(20,6) df2<-data.frame(y) df2

创建了如下数据框:

    y
1   8
2   4
3   4
4   6
5   5
6  10
7   6
8   2
9   8
10  3
11  6
12  6
13 12
14  9
15  1
16  5
17 13
18  5
19  5
20  1

要创建 y 的滞后列,请将以下代码添加到上面的代码片段中:

Open Compiler
y<-rpois(20,6) df2<-data.frame(y) transform(df2,Lagged_y=c(y[-1],NA))

输出

如果你将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

    y Lagged_y
1   8  4
2   4  4
3   4  6
4   6  5
5   5 10
6  10  6
7   6  2
8   2  8
9   8  3
10  3  6
11  6  6
12  6 12
13 12  9
14  9  1
15  1  5
16  5 13
17 13  5
18  5  5
19  5  1
20  1 NA

更新于:2021-11-12

2K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告