应用滚动四分位数并在R中跳过?

应用滚动四分位数并在R中跳过?,r,R,我有以下10年的天气数据,其中每个日期有10个值(10y*1d)。我一直在做的是,每15天日历窗口使用居中移动的百分位数计算第90个百分位数(最高和最低温度)。例如,对于5月1日,第90百分位将从4月24日至5月8日计算。然后5月2日将使用4月25日至5月9日的数据。因此,对于我的数据,我必须使用150(10y*15d)的窗口,因为我每天有10个值 head(df,50) YEAR MONTH DAY MEAN MAX MIN Data2 MD 114 1985

我有以下10年的天气数据,其中每个日期有10个值(10y*1d)。我一直在做的是,每15天日历窗口使用居中移动的百分位数计算第90个百分位数(最高和最低温度)。例如,对于5月1日,第90百分位将从4月24日至5月8日计算。然后5月2日将使用4月25日至5月9日的数据。因此,对于我的数据,我必须使用150(10y*15d)的窗口,因为我每天有10个值

head(df,50)
     YEAR MONTH DAY MEAN  MAX  MIN      Data2    MD
114  1985     4  24 20.0 25.9 13.8 1985-04-24 04-24
479  1986     4  24 22.0 28.6 16.0 1986-04-24 04-24
844  1987     4  24 23.9 30.0 18.5 1987-04-24 04-24
1210 1988     4  24 23.1 28.0 17.2 1988-04-24 04-24
1575 1989     4  24 22.8 28.0 16.7 1989-04-24 04-24
1940 1990     4  24 17.9 23.4 10.5 1990-04-24 04-24
2305 1991     4  24 24.4 32.0 17.8 1991-04-24 04-24
2671 1992     4  24 23.8 29.8 18.8 1992-04-24 04-24
3036 1993     4  24 23.5 28.4 19.2 1993-04-24 04-24
3401 1994     4  24 23.5 30.0 15.0 1994-04-24 04-24
115  1985     4  25 21.3 28.1 15.0 1985-04-25 04-25
480  1986     4  25 22.0 26.7 18.2 1986-04-25 04-25
845  1987     4  25 24.3 30.4 19.0 1987-04-25 04-25
1211 1988     4  25 21.7 26.4 17.4 1988-04-25 04-25
1576 1989     4  25 23.0 28.0 17.0 1989-04-25 04-25
1941 1990     4  25 15.3 22.7 11.2 1990-04-25 04-25
2306 1991     4  25 25.2 33.0 20.0 1991-04-25 04-25
2672 1992     4  25 23.2 28.4 19.8 1992-04-25 04-25
3037 1993     4  25 22.7 27.4 19.7 1993-04-25 04-25
3402 1994     4  25 22.8 30.0 15.0 1994-04-25 04-25
116  1985     4  26 21.4 28.0 16.5 1985-04-26 04-26
481  1986     4  26 21.3 26.4 18.1 1986-04-26 04-26
846  1987     4  26 24.7 31.0 20.6 1987-04-26 04-26
1212 1988     4  26 21.1 26.5 14.0 1988-04-26 04-26
1577 1989     4  26 21.5 28.0 16.5 1989-04-26 04-26
1942 1990     4  26 15.7 21.5  9.8 1990-04-26 04-26
2307 1991     4  26 25.7 32.8 20.0 1991-04-26 04-26
2673 1992     4  26 22.6 27.0 17.6 1992-04-26 04-26
3038 1993     4  26 22.0 26.0 19.0 1993-04-26 04-26
3403 1994     4  26 23.3 29.6 18.5 1994-04-26 04-26
117  1985     4  27 21.5 28.0 16.0 1985-04-27 04-27
482  1986     4  27 20.0 26.5 15.0 1986-04-27 04-27
847  1987     4  27 24.5 30.4 20.0 1987-04-27 04-27
1213 1988     4  27 23.4 28.3 14.0 1988-04-27 04-27
1578 1989     4  27 19.8 27.7 15.0 1989-04-27 04-27
1943 1990     4  27 12.3 16.4 10.0 1990-04-27 04-27
2308 1991     4  27 25.8 32.8 19.0 1991-04-27 04-27
2674 1992     4  27 22.0 28.4 15.6 1992-04-27 04-27
3039 1993     4  27 19.6 24.2 16.2 1993-04-27 04-27
3404 1994     4  27 25.0 31.6 19.0 1994-04-27 04-27
118  1985     4  28 21.4 31.1 16.0 1985-04-28 04-28
483  1986     4  28 19.7 25.9 15.0 1986-04-28 04-28
848  1987     4  28 24.6 32.8 18.0 1987-04-28 04-28
1214 1988     4  28 24.8 29.4 15.2 1988-04-28 04-28
1579 1989     4  28 23.1 28.4 14.0 1989-04-28 04-28
1944 1990     4  28 17.9 23.2  8.2 1990-04-28 04-28
2309 1991     4  28 26.2 32.0 19.0 1991-04-28 04-28
2675 1992     4  28 23.3 28.6 16.0 1992-04-28 04-28
3040 1993     4  28 19.1 24.2 14.0 1993-04-28 04-28
3405 1994     4  28 23.9 32.2 17.2 1994-04-28 04-28
我已经试过了,但它没有包括当天的所有10个值

require(caTools)
k=150
df$MPerMAX<- runquantile(df$MAX, k, probs = .9, endrule="NA" )

df[71:83,]
     YEAR MONTH DAY MEAN  MAX  MIN      Data2    MD MPerMAX
121  1985     5   1 21.7 28.3 15.5 1985-05-01 05-01      NA
486  1986     5   1 24.0 32.0 16.8 1986-05-01 05-01      NA
851  1987     5   1 25.0 32.6 18.4 1987-05-01 05-01      NA
1217 1988     5   1 26.6 32.2 18.2 1988-05-01 05-01      NA
1582 1989     5   1 26.5 31.0 18.0 1989-05-01 05-01    32.8
1947 1990     5   1 24.3 29.4 19.2 1990-05-01 05-01    32.8
2312 1991     5   1 26.3 33.8 21.2 1991-05-01 05-01    32.8
2678 1992     5   1 23.1 26.2 20.4 1992-05-01 05-01    32.8
3043 1993     5   1 23.3 29.8 17.6 1993-05-01 05-01    32.8
3408 1994     5   1 25.0 30.8 20.0 1994-05-01 05-01    32.8
122  1985     5   2 22.3 29.1 18.0 1985-05-02 05-02    32.8
487  1986     5   2 24.3 30.7 18.8 1986-05-02 05-02    32.8
852  1987     5   2 25.1 32.0 19.4 1987-05-02 05-02    32.8
我用了160天(中心日的150+10天)来处理这个问题。但对于5月2日及以后的日期,函数将仅从两侧移动1个数据点(天)。即,从4月25日(使用10中的一个值)到5月9日(使用10中的一个值)的天数将用于计算不正确的百分位数。 因此,我正在寻找一种方法,使函数移动10个数据点,而不是一个。
请帮忙

请看
by=
rollapply
参数。谢谢,这就是我要找的。您是否知道如何用相应的值填充NA,即所有May-1行获得相同的值,而不是一个值,另一个NAI不清楚您想做什么,但如果要将非NAs转入NAs占用的位置,请参见zoo软件包中的
NA.locf
。谢谢,但是我做到了,我得到了1.000看看
by=
参数到
rollapply
。谢谢,这就是我想要的。您是否知道如何用相应的值填充NA,即所有May-1行获得相同的值,而不是一个值,另一个NAI不清楚您想做什么,但如果要将非NAs转入NAs占据的位置,请参见zoo软件包中的
NA.locf
。谢谢,但我做到了,我得到了1.000
df$MPerMAX2=rollapply(df$MAX,width=150,FUN="quantile",p=.9, fill = NA)