Я работаю с набором переменных погоды (температура, осадки и т. Д. c.), У которых есть несколько пропущенных значений. Из-за моего конкретного подхода c (суммирование этих переменных за несколько дней) мне нужно обратиться к значениям NA в наборе данных.
Когда есть пропущенное дневное значение, я бы хотел заполнить этот день среднее значение предыдущего и следующего дня. Здесь предполагается, что значения погоды схожи от одного дня к другому. И да, я понимаю, что это большое предположение.
Я разработал следующее:
maxTemp <- c(13.2, 10.7, NA, 17.9, 6.6, 10, 13, NA, NA, 8.8, 9.9, 14.9, 16.3, NA, 18, 9.9, 11.5, 15.3, 21.7, 23.9, 26.6, 27, 22.3, NA, 17.9)
weather <- as.data.frame(maxTemp)
weather %>%
mutate(maxTempNA = if_else(is.na(maxTemp),
(lag(maxTemp) + lead(maxTemp))/2,
maxTemp))
Однако в некоторых случаях у меня есть два значения NA в последовательные дни, поэтому это не работает Есть какие-нибудь мысли о подходах, позволяющих кодировать это так, чтобы при наличии двух (или более) NA в среднем усредненные значения использовались для заполнения NA?
Окончательный результат будет выглядеть примерно так:
maxTemp <- c(13.2, 10.7, 14.3, 17.9, 6.6, 10, 13, 10.9, 10.9, 8.8, 9.9, 14.9, 16.3, 17.15, 18, 9.9, 11.5, 15.3, 21.7, 23.9, 26.6, 27, 22.3, 20.1, 17.9)