我不明白如何在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

最佳答案

试试这个:

transform(D8, PL8.lag = c(PL8[-1], NA))

如果您使用时间序列类,那会容易一些。在这种情况下,您可以使用lag:
library(zoo)
z <- read.zoo(D8)
lag(z, 0:1)

在另一个方向上,我们将有:
transform(D8, PL8.lag = c(NA, head(PL8, -1)))


lag(z, 0:-1)

关于r - 创建新的滞后data.frame列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5364057/

10-13 07:27