5

我有一个关于州级支持率的数据集。我需要将其中一个变量滞后两年。

数据是年度数据,跨越 1970 年到 2008 年。显然,如果我滞后数据,我将丢失一些观察结果(即:1970 年将无法找到 1968 年的数据)我可以丢失这些观察结果,但是 diff 命令当我尝试滞后时返回错误。

但是,当我运行延迟时,我收到以下错误,即替换与数据不匹配:

> df$lagvar <- diff(df$var, lag=2)
Error in `$<-.data.frame`(`*tmp*`, "lagvar", value = c(-0.4262501,  : 
replacement has 230 rows, data has 232

我四处寻找,但找不到解决方案。关于如何解决这个问题的任何想法?

4

1 回答 1

6

diff默认情况下不填充前导NA。你必须自己添加这些。

df$lagvar <- c(NA, NA, diff(df$var, lag=2))

您可以编写一个简单的包装函数来为您完成。像这样的东西,也许:

mydiff <- function(x, ...) {
  d <- diff(x, ...)
  c(rep(NA, NROW(x)-NROW(d)), d)
}
于 2013-05-01T21:45:13.557 回答