R中的Quantile()函数
您可以使用R中的Quantile()函数生成示例分位数。
大家好,今天我们将研究如何使用Quantile()函数查找值的分位数。
分位数:用外行术语来说,分位数不过是将示例分为相等的组或者大小。
由于这种性质,分位数也称为分形。
在分位数中,第25个百分位数称为下四分位数,第50个百分位数称为中位数,第75个百分位数称为较高四分位数。
在以下各节中,让我们看一下Quantile()函数在R中的工作方式。
Quantile()函数语法
R中的Quantile()函数的语法为:
quantile(x, probs = , na.rm = FALSE)
其中:
X =输入向量或者值
概率= 0到1之间的值的概率。
na.rm =删除NA值。
R中Quantile()函数的简单实现
好吧,希望您对分位数功能的定义和解释感到满意。
现在,借助一个简单的示例返回R的分位数功能,该示例返回输入数据的分位数。
#creates a vector having some values and the quantile function will return the percentiles for the data. df<-c(12,3,4,56,78,18,46,78,100) quantile(df)
输出:
0% 25% 50% 75% 100% 3 12 46 78 100
在上面的示例中,您可以观察到分位数功能首先按升序排列输入值,然后返回所需的值的百分位。
注意:分位数功能将数据分为相等的两半,其中中位数为中间,其余部分的下半部分为下四分位数,而上半部分为上四分位数。
处理遗漏的值-" NaN"
NaN无处不在。
在这个由数据驱动的数字世界中,您可能会更频繁地遇到这些NaN,这通常被称为缺失值。
如果您的数据无论如何都缺少这些值,则最终可能会在输出中获得NaN或者在输出中出现错误。
因此,为了处理这些缺失的值,我们将使用na.rm函数。
此函数将从我们的数据中删除NA值并返回真实值。
让我们看看它是如何工作的。
#creates a vector having values along with NaN's df<-c(12,3,4,56,78,18,NA,46,78,100,NA) quantile(df)
输出:
Error in quantile.default(df) : missing values and NaN's not allowed if 'na.rm' is FALSE
哦,我们出错了。
如果您的猜测与NA值有关,那么您绝对聪明。
如果我们的数据中存在NA值,则大多数函数最终将返回NA值本身或者如上所述的错误消息。
好吧,让我们使用na.rm函数删除这些缺失的值。
#creates a vector having values along with NaN's df<-c(12,3,4,56,78,18,NA,46,78,100,NA) #removes the NA values and returns the percentiles quantile(df,na.rm = TRUE)
输出:
0% 25% 50% 75% 100% 3 12 46 78 100
在上面的示例中,您可以看到na.rm函数及其对输出的影响。
该功能将删除NA,以避免错误的输出。
分位数中的"概率"参数
正如您在文章的第一部分中看到的语法中的probs参数所看到的那样,您可能想知道它的含义以及它的工作原理?好吧,将probs参数传递给分位数函数以获取特定或者自定义百分位数。
似乎很复杂?不用担心,我将其分解为简单的术语。
好吧,无论何时使用函数分位数,它都会返回标准百分位数,例如25,50和75百分位数。
但是,如果您想要47%或者88%的百分比呢?
参数"概率"出现了,您可以其中指定所需的百分位数来获得这些概率。
在进行示例之前,您应该不了解有关概率的知识。
概率:概率或者概率参数应介于0和1之间。
这是说明上述语句的示例。
#creates the vector of values df<-c(12,3,4,56,78,18,NA,46,78,100,NA) #returns the quantile of 22 and 77 th percentiles. quantile(df,na.rm = T,probs = c(22,77))
输出:
Error in quantile.default(df, na.rm = T, probs = c(22, 77)) : 'probs' outside [0,1]
哦,这是一个错误!
您知道了吗,发生了什么事?
好吧,这是Probs声明。
即使我们在probs参数中提到了正确的值,也违反了0-1条件。
probs参数应包含介于0和1之间的值。
因此,我们必须将概率22和77转换为0.22和0.77。
现在输入值在0到1之间吧?我希望这是有道理的。
#creates a vector of values df<-c(12,3,4,56,78,18,NA,46,78,100,NA) #returns the 22 and 77th percentiles of the input values quantile(df,na.rm = T,probs = c(0.22,0.77))
输出:
22% 77% 10.08 78.00
"取消命名"功能及其用途
假设您希望代码仅返回百分位数,并避免出现切点。
在这种情况下,您可以使用"取消命名"功能。
"取消命名"功能将删除标题或者剪切点(0%,25%,50%,75%,100%),仅返回百分位。
让我们看看它是如何工作的!
#creates a vector of values df<-c(12,3,4,56,78,18,NA,46,78,100,NA) quantile(df,na.rm = T,probs = c(0.22,0.77)) #avoids the cut-points and returns only the percentiles. unname(quantile(df,na.rm = T,probs = c(0.22,0.77)))
输出:
10.08 78.00
现在,您可以观察到切点已被unname函数禁用或者删除,并且仅返回百分位数。
"回合"功能及其用途
过去的文章中,我们已经详细讨论了R中的round函数。
现在,我们将使用round函数舍入值。
让我们看看它是如何工作的!
#creates a vector of values df<-c(12,3,4,56,78,18,NA,46,78,100,NA) quantile(df,na.rm = T,probs = c(0.22,0.77)) #returns the round off values unname(round(quantile(df,na.rm = T,probs = c(0.22,0.77))))
输出:
10 78
如您所见,我们的输出值四舍五入到小数点后零位。
获取数据集中多个组/列的分位数
到目前为止,我们已经讨论了分位数功能,其用途和应用以及其参数以及如何正确使用它们。
在本节中,我们将获取数据集中多个列的分位数。
听起来不错?跟着我!
为此,我将使用" mtcars"数据集,并为此使用" dplyr"库。
#reads the data data("mtcars") #returns the top few rows of the data head(mtcars) #install required paclages install.packages('dplyr') library(dplyr) #using tapply, we can apply the function to multiple groups do.call("rbind",tapply(mtcars$mpg, mtcars$gear, quantile))
输出:
0% 25% 50% 75% 100% 3 10.4 14.5 15.5 18.400 21.5 4 17.8 21.0 22.8 28.075 33.9 5 15.0 15.8 19.7 26.000 30.4
在上述过程中,我们必须安装" dplyr"软件包,然后将使用tapply和rbind函数获取mtcars数据集的多个列。
在上一节中,我们在mtcars数据集中采用了多个列,例如" mpg"和" gear"列。
这样,我们可以计算数据集中多个组的分位数。
我们可以可视化百分位数吗?
我的回答是肯定的!最好的绘图是箱形图。
让我以虹膜数据集为例,尝试使方框图可视化,该方框图还将显示百分位数。
来吧!
data(iris) head(iris)
这是虹膜数据集的前6个值。
让我们使用名为"摘要"的功能探索数据。
summary(iris)
在上图中,您可以看到平均值,中位数,第25个百分位数(第1个四分位数),第75个百分位数(第3个百分位数)以及最小值和最大值。
让我们通过箱形图来绘制这些信息。
我们开始做吧!
#plots a boxplot with labels boxplot(iris$Sepal.Length,main='The boxplot showing the percentiles',col='Orange',ylab='Values',xlab='Sepal Length',border = 'brown',horizontal = T)
箱形图可以显示数据的许多方面。
在下图中,我提到了由箱形图表示的特定值。
这将为您节省一些时间,并以最好的方式促进您的理解。