Я хочу рассчитать скользящие средние, чтобы заполнить записи NA известными позициями 3, 5 и 1. Как я могу это сделать с зоопарком пакета в R?R и Zoo: скользящая средняя с оборванными данными?
Входной
> library(zoo)
> hh <- c(NA, NA, NA, 3, NA, 5, NA, 1, NA, NA, NA, NA)
Сбой
неудачно с rollmean
> rollmean(hh,na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA > rollmean(hh,4, na.omit=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA > rollmean(hh,4, na.rm=TRUE,k=1) [1] NA NA NA NA NA NA NA NA NA NA NA NA
неудачно с Rollapply
> rollapply(hh, 4, function(x) mean(x)) [1] NA NA NA NA NA NA NA NA NA
Предназначенный выход что-то вроде
> COMMAND(hh, movingAverageNumber, function(x) mean(x)) [1] 3 3.3 3.4 3 4 5 3 1 2 1.5 1.2 1 0.8
Связанные
+1 для получения команд, работающих :) Как бы вы заполнить концы чч? hh имеет 12 элементов, в то время как первый кандидат здесь имеет 8 элементов, в то время как последний кандидат здесь имеет 9 элементов (с одним NaN. Существует ли какая-либо опция для заполнения значений NaN с некоторым значением по умолчанию, например 1? –
@Rhodo обе функции генерируют ошибку. на выходе показан аргумент, который должен быть установлен, должен быть 'width', а не' by' – manotheshark
@ReganAlpha Я бы предложил ввести '? rollapply' и искать аргумент, называемый' fill' – manotheshark