Отставание с отсутствующими данными

У меня есть набор данных о рейтингах одобрения на уровне штата. Мне нужно отставать от одной из переменных на два года.

Данные являются годовыми и охватывают период с 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

Я искал, но не нашел решения. Есть идеи, как это обойти?


person user2340913    schedule 01.05.2013    source источник


Ответы (1)


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)
}
person Joshua Ulrich    schedule 01.05.2013
comment
Спасибо! Это сработало отлично. Я выбрал первую строчку кода. - person user2340913; 02.05.2013