我想得到(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)]