2013-05-01 23 views
5

私は州レベルの支持率に関するデータセットを持っています。変数の1つを2年遅らせる必要があります。データが欠落している遅れ

データは年ごとで、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 

私の周りを検索したが、解決策を見つけることができません。これを回避する方法に関するアイデア?

答えて

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

関連する問題