2013-05-01 132 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