Бег значит с условием в R? - PullRequest
0 голосов
/ 07 июня 2018

Текущее среднее значение легко вычислить с помощью «caTools», но я хочу, только если в окне есть хотя бы 3 значения, в противном случае возвращает NA

    library("caTools") 
    x=c(56,NA,4,6,2,1,NA,NA,NA,5,2,5,6,4,7,5,2,NA) 
    runmean(x,5)

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Здесь я определяю функцию, которая подсчитывает не-NA элементы и, если она меньше трех, возвращает NA.Однако, если оно больше или равно 3, возвращается среднее значение.

foo <- function(x)ifelse(sum(!is.na(x)) < 3, NA, mean(x, na.rm = TRUE))

Затем я применяю функцию, используя rollapply из пакета zoo,

rollapply(x, width = 5, FUN = foo)

дает следующие результаты:

#[1] 17.00  3.25  3.25  3.00    NA    NA    NA  4.00  4.50  4.40  4.80  5.40  4.80  4.50
0 голосов
/ 07 июня 2018

Как то так ...?

> library(zoo)
> rollapply(x, 3, mean)
 [1]       NA       NA 4.000000 3.000000       NA       NA       NA       NA       NA 4.000000 4.333333 5.000000 5.666667
[14] 5.333333 4.666667       NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...