2013-05-01 96 views
5

我有一个关于州级别支持评级的数据集。我需要延迟两年的其中一个变量。显然,如果我滞后了数据,我将失去一些观察结果(即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 

我四处搜寻,但无法找到一个解决方案。任何想法如何解决这个问题?

回答

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) 
} 
+0

谢谢!这工作完美。我选择了第一行代码。 – user2340913 2013-05-01 22:17:36