数据丢失滞后

use*_*913 5 diff r missing-data

我有关于州级别批准评级的数据集.我需要将其中一个变量滞后两年.

数据是年度的,跨越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
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ich 6

diffNA默认情况下不会使用前导填充.你必须自己添加.

df$lagvar <- c(NA, NA, diff(df$var, lag=2))
Run Code Online (Sandbox Code Playgroud)

您可以编写一个简单的包装函数来为您完成.也许是这样的事情:

mydiff <- function(x, ...) {
  d <- diff(x, ...)
  c(rep(NA, NROW(x)-NROW(d)), d)
}
Run Code Online (Sandbox Code Playgroud)