Замена нескольких NA одним средним - PullRequest
0 голосов
/ 01 октября 2018

У меня есть вектор следующего типа:

x <- c(2,5,1,5,NA,NA,NA,9,23,1,NA,NA,NA,5,2)

Есть ли способ заменить мои NA средним значением значения до и после NA?Как и при их интерполяции, но с одним значением!

* Обновление: ожидаемый результат в этом случае будет c(2,5,1,5,7,7,7,9,23,1,3,3,3,5,2)

Большое спасибо.

1 Ответ

0 голосов
/ 01 октября 2018

Мы можем использовать na.approx из zoo

library(zoo)
na.approx(x, method = "constant", f = .5)
# [1]  2  5  1  5  7  7  7  9 23  1  3  3  3  5  2

Об аргументе f, из ?approxfun

для метода = "константа" числоот 0 до 1 включительно, что указывает на компромисс между левыми и правыми непрерывными пошаговыми функциями.Если y0 и y1 являются значениями слева и справа от точки, то значение равно y0, если f == 0, y1, если f == 1, и y0 * (1-f) + y1 * f для промежуточных значений.Таким образом, результат является непрерывным справа для f == 0 и непрерывным слева для f == 1, даже для не конечных значений y

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...