5号摘要代码

Code for 5 number summary

我做了一个箱形图,比较了奥运会男子游泳运动员的年龄以及他们是否获得了奖牌。我想知道如何编写代码以获得没有奖牌的箱线图和有奖牌的箱线图的五位数摘要(我将奖牌更改为一个因素)。我尝试了 summary(age,medal.f)summary(age~medal.f),似乎没有什么 working/I 不知道如何分离箱线图。关于如何做到这一点有什么想法吗?

获取此信息的最简单方法是保存 boxplot() 调用的结果并提取 $stats 组件。使用内置的ToothGrowth数据集,

b <- boxplot(len~supp,data=ToothGrowth)
b$stats
##      [,1] [,2]
## [1,]  8.2  4.2
## [2,] 15.2 11.2
## [3,] 22.7 16.5
## [4,] 25.8 23.3
## [5,] 30.9 33.9

更一般地说,您可以使用类似

的方法手动完成此操作
with(data,lapply(split(age,medal),boxplot.stats))

还有许多其他解决方案涉及 by()plyrdplyrdata.table 包...

再次使用 ToothGrowth:

(bps <- with(ToothGrowth,lapply(split(len,supp),boxplot.stats)))
$OJ
$OJ$stats
[1]  8.2 15.2 22.7 25.8 30.9

$OJ$n
[1] 30

$OJ$conf
[1] 19.64225 25.75775

$OJ$out
numeric(0)


$VC
$VC$stats
[1]  4.2 11.2 16.5 23.3 33.9

$VC$n
[1] 30

$VC$conf
[1] 13.00955 19.99045

$VC$out
numeric(0)

如果你只想要5个数字的摘要,你可以按如下方式提取它们:

 sapply(bps,"[[","stats")
       OJ   VC
[1,]  8.2  4.2
[2,] 15.2 11.2
[3,] 22.7 16.5
[4,] 25.8 23.3
[5,] 30.9 33.9