【发布时间】:2018-02-21 16:24:11
【问题描述】:
我试图找出两个系列之间的滞后。假设有一个变量 temp2,其值滞后于 temp1,其中滞后不是恒定的。
library(data.table)
dt <- data.table(
datetime = seq(as.POSIXct("2000-01-01 00:00:00"),as.POSIXct("2000-01-01 09:00:00"), by = "1 hour"),
temp1 = seq(30, 21, by = -1),
temp2 = c(30, seq(30, 25, by = -1), seq(25, 23, by = -1))
)
我想要一个额外的列“滞后”等于 temp1 和 temp2 之间的滞后,以便结果如下所示:
dt <- data.table(
datetime = seq(as.POSIXct("2000-01-01 00:00:00"),as.POSIXct("2000-01-01 09:00:00"), by = "1 hour"),
temp1 = seq(30, 21, by = -1),
temp2 = c(30, seq(30, 25, by = -1), seq(25, 23, by = -1)),
lag = c(0, 1, 1, 1, 1, 1, 2, 2, NA, NA)
)
感谢您的帮助:)
【问题讨论】:
-
为什么第 7 行的滞后值为 2?我认为应该是1。为什么最后两行的数字是
NA?我认为他们应该是 2。 -
我只是想表明滞后可能不是恒定的。在第 7 行 temp1 = 24 和 temp2 直到第 9 行才达到此值。我将最后两行设置为 NA 因为 temp2 没有达到 temp1 值(系列结束)。也许我可以更改示例以使其更清楚。
-
为什么不只是
dt[, lag:= temp2 - temp1][]。如果不是,请详细说明时间维度和两个值之间的关系。 -
我的例子太简单了。随着时间的推移,这两个值之间没有确切的关系。我将编辑我的问题以澄清。
标签: r data.table time-series