Я использую rollmeanКак правильно выровнять прокатный виду
library(zoo)
library(TTR)
library(data.table)
date = seq(as.Date("2016-01-01"),as.Date("2016-01-10"),"day")
value =seq(1,10,1)
mydata = data.frame (date, value)
mydata
setDT(mydata)[, paste0('F1',2:3) := lapply(2:3, function(x) rollmean(value, x, fill = rep(NA,x-1),align="right")),][]
date value F12 F13
1: 2016-01-01 1 NA NA
2: 2016-01-02 2 1.5 NA
3: 2016-01-03 3 2.5 2
4: 2016-01-04 4 3.5 3
5: 2016-01-05 5 4.5 4
6: 2016-01-06 6 5.5 5
7: 2016-01-07 7 6.5 6
8: 2016-01-08 8 7.5 7
9: 2016-01-09 9 8.5 8
10: 2016-01-10 10 9.5 9
, и я хотел бы среднее в ряд, чтобы быть вычислен с использованием предыдущих п наблюдений. В приведенных выше данных вы можете видеть, что среднее значение во второй строке для F12 равно 1,5, что является средним значением 2 & 1. Я хотел бы, чтобы это было NA, а 1,5 - в строке 3, так что среднее значение F12 в 3-я строка будет 1,5. Это возможно? Я попытался изменить параметр align, но не повезло. Спасибо.
@ProcrastinatusMaximus Спасибо за редактирование. – akrun
Обратите внимание, что любую из этих функций можно использовать поочередно. Первый использует 'rollmeanr', а второй использует' rollapply' и не включает 'shift'. 'function (x) shift (rollmeanr (value, x, fill = NA))' или 'function (x) rollapply (значение, list (-seq_len (x)), mean, fill = NA)' –