R语言 如何计算百分位数
在这篇文章中,我们将讨论如何在R编程语言中计算百分位数。
百分位数是中心趋势的衡量标准,它描述了在总数据中大约有一定比例的数据位于它的下面。在R语言中,我们可以使用quantile()函数来完成这项工作。
语法: quantile( data, probs)
参数 。
- data: 要计算其百分位数的数据
- probs: 百分位数的值
例1: 计算百分位数
要计算百分位数,我们只需传递数据和所需百分位数的值。
x<-c(2,13,5,36,12,50)
res<-quantile(x,probs=0.5)
res
输出 。
50%
12.5
例2:计算向量的百分位数
我们可以一次计算多个百分位数。为此,我们必须向probs参数传递百分位数的向量,而不是单一的值。
x<-c(2,13,5,36,12,50)
res<-quantile(x,probs=c(0.5,0.75))
res
输出 。
50% 75%
12.50 30.25
例3:计算数据框架中的百分位数
有时需求要求计算一个数据框架列的百分位数,在这种情况下,整个过程保持不变,只是你必须传递列名,以代替数据和要计算的百分位数值。
df<-data.frame(x=c(2,13,5,36,12,50),
y=c('a','b','c','c','c','b'))
res<-quantile(df$x,probs=c(0.35,0.7))
res
输出 。
35% 70%
10.25 24.50
例4:几列和所有列的百分位数
我们还可以一次找到数据框架中几列的百分位数。这也可以应用于查找数据框架中所有数字列的百分位数。为此我们使用apply()函数,在这个函数中我们将传递只有数字列的数据框架和必须应用于所有列的量化函数。
语法: apply( dataframe, function)
df<-data.frame(x=c(2,13,5,36,12,50),
y=c('a','b','c','c','c','b'),
z=c(2.1,6,3.8,4.8,2.2,1.1))
sub_df<-df[,c('x','z')]
res<-apply(sub_df, 2, function(x) quantile(x,probs=0.5))
res
输出 。
x z
12.5 3.0
例5:按组计算百分位数
我们也可以将数值分组,然后找出每个组的百分位数。为此,我们使用groupby()函数,然后在summaryize()中应用quantile函数。
library(dplyr)
df<-data.frame(x=c(2,13,5,36,12,50),
y=c('a','b','c','c','c','b'))
df %>% group_by(y) %>%
summarize(res=quantile(x,probs=0.5))
输出 。
A tibble: 3 x 2
y res
<chr> <dbl>
a 2
b 31.5
c 12
例6:百分位数的可视化
将百分位数可视化可以使其更好地理解。
df<-data.frame(x=c(2,13,5,36,12,50),
y=c('a','b','c','c','c','b'),
z=c(2.1,6,3.8,4.8,2.2,1.1))
n<-length(dfx)
plot((1:n-1)/(n-1), sort(dfx.Length), type='h',
xlab = "Percentile",
ylab = "Value")
输出 。