Здесь я определяю функцию, которая подсчитывает не-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