R Завершение NA со средним из предыдущих значений - PullRequest
1 голос
/ 25 марта 2020

Я рассмотрел несколько похожих вопросов по SO, но, похоже, не могу найти решение, которое работает для меня (хотя зоопарк и тидыр помогли мне приблизиться). У меня есть df со столбцом, содержащим серию значений NA, и мне нужно заполнить эти значения средним за последние 2 лага. Это новое значение должно быть включено в качестве одной из задержек в следующей записи и так далее. Так что-то вроде этого:

1
2
3
4
5
NA
NA
NA

должно стать

1
2
3
4
5
4.5 
4.75 
4.625 

Заранее спасибо за любые предложения, вот некоторые примеры данных для игры.

df <- tibble::tribble(
  ~x,
  1, 
  2, 
  3, 
  4,
  5,
  NA,
  NA,
  NA
)

1 Ответ

4 голосов
/ 25 марта 2020

Я бы использовал for l oop:

for (i in 1:nrow(df)){
    if(is.na(df$x[i])){
        df$x[i] <- mean(c(df$x[i-1], df$x[i-2]))
    }
}

#    x
#   <dbl>
# 1  1   
# 2  2   
# 3  3   
# 4  4   
# 5  5   
# 6  4.5 
# 7  4.75
# 8  4.62
...