我不了解如何在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)