Return R 中的第 90 个百分位值
Return the 90th percentile values in R
例如,我有一个城市 30 年气温的数据集,数据集如下所示:
Year Julian_date temperature
1991 1 2.1
1991 2 2.2
... ... ...
1991 365 2.3
1992 1 2.1
... ... ...
1992 365 2.5
... ... ...
2020 366 2.5
我想计算每个儒略日期(来自不同年份)的第 90 个百分位值,并返回结果,例如:
Julian_date value(the 90th percentile)
1 2.4
2 2.6
... ...
365 2.5
r中的代码应该怎么写?
可以先按Julian_date
分组,然后用quantile
函数设置summarise
内的概率。
library(tidyverse)
df %>%
group_by(Julian_date) %>%
summarise("value (the 90th percentile)" = quantile(temperature, probs=0.9, na.rm=TRUE))
输出
Julian_date `value (the 90th percentile)`
<int> <dbl>
1 1 2.1
2 2 2.2
3 365 2.5
数据
df <- structure(list(Year = c(1991L, 1991L, 1991L, 1992L, 1992L, 2020L
), Julian_date = c(1L, 2L, 365L, 1L, 365L, 365L), temperature = c(2.1,
2.2, 2.3, 2.1, 2.5, 2.5)), class = "data.frame", row.names = c(NA,
-6L))
您可以使用quantile()
功能。如果您问题中的 (from different years)
意味着每年应该有单独的计算,那么您需要按 Year
和 Julian_date
对数据框进行分组。相反,如果这意味着不同年份组合在一起,则您需要仅按 Julian_date
对数据框进行分组,如 @AndrewGB 和 @benson23 所示。
library(dplyr)
yourdf %>% group_by(Year, Julian_date) %>%
summarise (value_90th_percentile = quantile(temperature, 0.9, na.rm = TRUE))
例如,我有一个城市 30 年气温的数据集,数据集如下所示:
Year Julian_date temperature
1991 1 2.1
1991 2 2.2
... ... ...
1991 365 2.3
1992 1 2.1
... ... ...
1992 365 2.5
... ... ...
2020 366 2.5
我想计算每个儒略日期(来自不同年份)的第 90 个百分位值,并返回结果,例如:
Julian_date value(the 90th percentile)
1 2.4
2 2.6
... ...
365 2.5
r中的代码应该怎么写?
可以先按Julian_date
分组,然后用quantile
函数设置summarise
内的概率。
library(tidyverse)
df %>%
group_by(Julian_date) %>%
summarise("value (the 90th percentile)" = quantile(temperature, probs=0.9, na.rm=TRUE))
输出
Julian_date `value (the 90th percentile)`
<int> <dbl>
1 1 2.1
2 2 2.2
3 365 2.5
数据
df <- structure(list(Year = c(1991L, 1991L, 1991L, 1992L, 1992L, 2020L
), Julian_date = c(1L, 2L, 365L, 1L, 365L, 365L), temperature = c(2.1,
2.2, 2.3, 2.1, 2.5, 2.5)), class = "data.frame", row.names = c(NA,
-6L))
您可以使用quantile()
功能。如果您问题中的 (from different years)
意味着每年应该有单独的计算,那么您需要按 Year
和 Julian_date
对数据框进行分组。相反,如果这意味着不同年份组合在一起,则您需要仅按 Julian_date
对数据框进行分组,如 @AndrewGB 和 @benson23 所示。
library(dplyr)
yourdf %>% group_by(Year, Julian_date) %>%
summarise (value_90th_percentile = quantile(temperature, 0.9, na.rm = TRUE))