r - 朱利安日期滚动分位数
问题描述
我希望Tmean
使用从 1971-2020 年基期开始的 10 天运行窗口计算每个日历日的第 90 个百分位温度 ( )。也就是说,一年中第 1 天的第 90 个百分位数应使用第 361-365 天和第 1-6 天的时间序列计算。但在闰年,它将使用 362-366 天和 2-6 天的时间序列来计算。我已经尝试过这个代码,但它没有做我想要的。请有任何想法。
#Example data
Date= seq(as.Date('1971/01/01'), as.Date('2020/12/31'), by="day")
df= as.data.frame(Date)
df$Tmean= round(runif(nrow(df), min = -16, max = 33),2)
df$DayOfYr <- strftime(df$Date, format = "%j")
library(dplyr)
d= df %>%
group_by(DayOfYr) %>%
summarise (p90th=round(zoo::rollapply(Tmean, width = 10, FUN = quantile, probs= 0.90,
fill = NA, align = "center"), 2 ))
d[1:14,]
# A tibble: 14 x 2
# Groups: DayOfYr [1]
DayOfYr p90th
<chr> <dbl>
1 001 NA
2 001 NA
3 001 NA
4 001 NA
5 001 31.3
6 001 31.3
7 001 31.3
8 001 31.3
9 001 31.3
10 001 31.3
11 001 30.4
12 001 24.6
13 001 23.0
14 001 22.7
预期的输出是这样的
DayOfyr p90th
001 31.0
002 21.7
003 29.2
004 32.0
005 26.8
... ....
... ....
365 37.8
366 32.8
解决方案
推荐阅读
- angular - 在离子项目中输出 XML 文件数据
- splunk - Splunk 索引使用搜索将标题为 NULL 的列添加到结果中
- xml - 为什么此 xslt 副本示例未返回预期结果
- php - 用多个变量替换多个字符串
- r - 用于线性拟合的`polyfit`(Matlab)和`lm`(R)之间的区别
- java - 是否可以查看休眠的 queryPlanCache 内容?
- java - 如何登录 Google 帐户 - api 28
- sorting - 数组列表中的枚举和排序
- c++ - 以某种算法从容器到二元谓词函数的参数流(发送参数对的方式)
- r - reticulate 1.13 - 使用 R 时出现“sys$stdout$flush() 错误:尝试应用非功能”(R-studio 工作)