创建新的滞后data.frame列

LGT*_*der 4 r

我不了解如何在data.frame中创建一个新的"滞后"列.我的当前数据是在数据末尾收集的.我需要发送一个程序来假设它是在早上收集的第一件事,所以我需要将第2列滞后1行.我写的代码只返回相同的数据.

我该怎么做呢?

谢谢.

D8 = structure(list(Date = structure(c(14396, 14397, 14398, 14399, 
14400, 14403, 14404, 14405, 14406,
14407, 14410, 14411, 14412,  14413,
14414, 14417, 14418, 14419, 14420,
14421, 14424, 14425,  14426, 14427,
14428, 14431, 14432, 14433, 14434,
14435), class = "Date"), 
    PL8 = c(0, 0, 0, 0, 76, 0, -334, -974, -104, 356, 378, -1102, 
    -434, 266, -434, 444, 464, 0, 486, 406, -224, -214, 0, -4, 
    0, -188, 356, 322, -484, 436)), .Names = c("Date", "PL8"), row.names =
c(NA,  30L), class = "data.frame")


D8

D8[,3] = lag(D8[,2],k=-1)

D8
Run Code Online (Sandbox Code Playgroud)

G. *_*eck 14

试试这个:

transform(D8, PL8.lag = c(PL8[-1], NA))
Run Code Online (Sandbox Code Playgroud)

如果使用时间序列类会更容易一些.在这种情况下,您可以使用lag:

library(zoo)
z <- read.zoo(D8)
lag(z, 0:1)
Run Code Online (Sandbox Code Playgroud)

在另一个方向,我们将:

transform(D8, PL8.lag = c(NA, head(PL8, -1)))
Run Code Online (Sandbox Code Playgroud)

lag(z, 0:-1)
Run Code Online (Sandbox Code Playgroud)