我有关于州级别批准评级的数据集。我需要将其中一个变量滞后两年。
数据是年度的,跨越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
我已经四处寻找,但无法找到解决方案。关于如何解决这个问题的任何想法?
答案 0 :(得分: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)
}