我有以下10年的天气数据,其中每个日期有10个值(10y * 1d)。我一直在研究的是使用每15天日历窗口的居中移动百分位数来计算第90个百分位数(对于最高和最低温度)。例如,对于5月1日,第90百分位数将从4月24日到5月8日计算。然后5月2日将使用4月25日至5月9日的数据。因此,对于我的数据,我必须使用150(10y * 15d)的窗口,因为我每天有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
我试过这个,但它没有包含居中日的所有10个值
df$MPerMAX2=rollapply(df$MAX,width=150,FUN="quantile",p=.9, fill = NA)
也尝试了这个,但仍然无法正常工作
{{1}}
为了解决这个问题,我使用了160天(中心日的150 + 10d)。但是对于5月2日和以后的日期,该功能只会从双方移动1个数据点(天)。即,从4月25日(使用10中的一个值)到5月9日(使用10中的一个值)的天数将用于计算不正确的百分位数。 所以我正在寻找一种方法,该函数将移动10个数据点而不是1个。 请帮忙。