Свернуть квантиль в data.table по группам столбцов, используя индекс R - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы получить квантиль 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)] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...