2014-01-19 121 views
15

一个快速为你,最亲爱的[R大师:计算百分

我做的任务,我一直在问,在这个练习中,得到基本统计出来的数据集infert的(这是内置),特别是其中的一列,infert$age

对于任何不熟悉的数据集:

> table_ages  # Which is just subset(infert, select=c("age")); 
    age 
1 26 
2 42 
3 39 
4 34 
5 35 
6 36 
7 23 
8 32 
9 21 
10 28 
11 29 
... 
246 35 
247 29 
248 23 

我已经找到列,方差,偏度标准,它都没事偏差的中值,直到有人问我找到列“百分点”

到目前为止我还没有找到任何东西,也许我错误地从作业的语言希腊语翻译了它。这是“ποσοστημόρια”,谷歌翻译指出英文词语是“百分位”。

任何关于寻找infert$age“百分点”的教程或想法?

+7

请参阅'?quantile'也许? – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto这看起来基本足以匹配其余练习的感觉。我认为就是这样。 您刚刚将我推入解决方案,谢谢:p –

回答

22

如果您命令一个向量x,并且查找向量中途的值,则只需找到中值或第50百分位。同样的逻辑适用于任何百分比。这里有两个例子。

x <- rnorm(100) 
quantile(x, probs = c(0, 0.25, 0.5, 0.75, 1)) # quartile 
quantile(x, probs = seq(0, 1, by= 0.1)) # decile 
2
table_ages <- subset(infert, select=c("age")) 
summary(table_ages) 
#   age  
# Min. :21.00 
# 1st Qu.:28.00 
# Median :31.00 
# Mean :31.50 
# 3rd Qu.:35.25 
# Max. :44.00 

这可能是他们在寻找什么。应用于数字的summary(...)返回数据的最小值,最大值,平均值,中位数以及第25和第75百分位数。

注意

summary(infert$age) 
# Min. 1st Qu. Median Mean 3rd Qu. Max. 
# 21.00 28.00 31.00 31.50 35.25 44.00 

的数字是相同的,但格式不同。这是因为table_ages是一列(年龄)的数据帧,而infert$age是一个数字向量。尝试输入summary(infert)

16

quantile()函数将完成您可能想要的大部分功能,但由于该问题不明确,因此我会提供一个与quantile()稍有不同的备选答案。

ecdf(infert$age)(infert$age) 

会产生相同的长度的矢量作为infert$age给人infert$age比例即每个观察的下方。您可以阅读ecdf文档,但基本思想是ecdf()将为您提供返回累积分布的函数。因此ecdf(X)(Y)是X在Y的点的累计分配的值。如果你想知道的是低于30(因此什么百分30的样品中)只是概率,你可以说

ecdf(infert$age)(30) 

这种方法与使用quantile()函数的主要区别在于,quantile()要求您将概率置于等级之外,这就要求您将等级放在概率之外。

0

您还可以使用hmisc包,会给你下面的百分位:

0.05,0。1,0.25,0.5,0.75,0.9,0.95

只是使用描述(table_ages)