Я хотел бы получить квантиль 75 из (n Год * каждый индекс * n дней окна) движущийся квантиль рассчитывается, как показано ниже, с окном 15 дней с центром в каждом индексе (ind).
Результат должен быть одинаковым для каждого индекса за все годы (со значениями NA для 7 первого / последнего индекса из-за окна).
Мой код правильно возвращает значения NA для первого индекса, но помещает то же значение в последовательное значение индекса. Я не знаю, в чем проблема.
str(DATA)
'data.frame': 3600 obs. of 8 variables:
$ Year : int 1980 1980 1980 1980 1980 1980 1980 1980 1980 1980 ...
$ ind : num 46 47 48 49 50 51 52 53 54 55 ...
$ Month : int 2 2 2 2 2 2 2 2 2 2 ...
$ Day : num 15 16 17 18 19 20 21 22 23 24 ...
$ date : Date, format: "1980-02-15" "1980-02-16" ...
$ value : num 127.8 128.8 128 26.9 25.2 ...
$ variable : chr "TR" "TR" "TR" "TR" ...
$ Region : chr "Reg1" "Reg1" "Reg1" "Reg1" ...
Вот мой код:
cantil75 <- function(var) {quantile(var,0.75,na.rm= TRUE,names = FALSE)}
newdata<-as.data.table(DATA)
newdata[,ind.length := with(rle(ind), rep(lengths,lengths))]
newdata[,c75:=rollapply(value, width=15, cantil75, fill=NA,align='center'),by=list(ind.length,Region,variable)]