我怎样才能在 R 中滞后一个 ts 对象?

How can i lag a ts object in R?

我有一个数据框,每个变量每年有 436 个观察值。

我通过命令把每个变量都做了一个ts对象

ts("a", frequency=436)

现在,我想提前 1 年移动一个变量(例如,从 2010 年到 2011 年)

因此,我尝试使用命令

lag("a", k=1)

但它给了我:

Error: x must be a vector, not a ts object, do you want stats::lag()?

你有什么建议吗?

您可能已经安装了 dplyr。它用自己的不兼容 lag 破坏了 R 的 lag。您可以执行以下操作之一:

  1. 正如消息所说,使用 stats::lag 而不是 lag 来强制使用 R 的 lag.
  2. 定义lag <- stats::lag然后照常使用lag。要参考 dplyr 的滞后,您可以使用 dplyr::lag.
  3. 不加载 dplyr。
  4. 加载 dplyr,但这样做:library(dplyr, exclude = c("filter", "lag"))。如果你这样做 lag 将引用 R 的 lagdplyr::lag 将引用 dplyr 的不兼容 lag.
  5. 如果您的数据是数字 ts 系列,请使用 collapse 包中的 flag -- 问题中的数据将无法使用此替代方案,因为它是字符 ts 系列。