使用索引R按列组在data.table中滚动应用分位数

时间:2018-09-03 17:52:19

标签: r datatable quantile rollapply

我想得到(n Year *每个索引* n天窗口)的分位数75,如下计算移动分位数,以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)] 

0 个答案:

没有答案