我有一个关于州级支持率的数据集。我需要将其中一个变量滞后两年。
数据是年度数据,跨度为 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
我四处寻找,但找不到解决方案。关于如何解决这个问题有什么想法吗?
最佳答案
默认情况下,
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)
}
关于r - 因数据缺失而滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16327000/