6.11 表格统计
介绍操作表格的 table, addmargins, prop.table, xtabs, margin.table, ftabe 等函数
table 多个分类变量分组计数统计
- 介绍 warpbreaks 和 airquality 纽约空气质量监测数据集 二维的数据框
- UCBAdmissions 1973 年加州大学伯克利分校的院系录取数据集 3维的列联表
- Titanic 4维的列联表数据 泰坦尼克号幸存者数据集
with(warpbreaks, table(wool, tension))
## tension
## wool L M H
## A 9 9 9
## B 9 9 9
以 iris 数据集为例,table 的第一个参数是自己制造的第二个分类变量,原始分类变量是 Species
with(iris, table(Sepal.check = Sepal.Length > 7, Species))
## Species
## Sepal.check setosa versicolor virginica
## FALSE 50 50 38
## TRUE 0 0 12
with(iris, table(Sepal.check = Sepal.Length > mean(Sepal.Length), Species))
## Species
## Sepal.check setosa versicolor virginica
## FALSE 50 24 6
## TRUE 0 26 44
以 airquality 数据集为例,看看月份中臭氧含量比较高的几天
<- with(airquality, table(Oz.high = Ozone > 80, Month))
aiq.tab aiq.tab
## Month
## Oz.high 5 6 7 8 9
## FALSE 25 9 20 19 27
## TRUE 1 0 6 7 2
对表格按行和列求和,即求表格的边际,查看总体情况
addmargins(aiq.tab, 1:2)
## Month
## Oz.high 5 6 7 8 9 Sum
## FALSE 25 9 20 19 27 100
## TRUE 1 0 6 7 2 16
## Sum 26 9 26 26 29 116
臭氧含量超 80 的天数在每个月的占比,addmargins
的第二个参数 1 表示对列求和
<- prop.table(aiq.tab, 2)
aiq.prop aiq.prop
## Month
## Oz.high 5 6 7 8 9
## FALSE 0.96153846 1.00000000 0.76923077 0.73076923 0.93103448
## TRUE 0.03846154 0.00000000 0.23076923 0.26923077 0.06896552
<- addmargins(aiq.prop, 1)
aiq.marprop aiq.marprop
## Month
## Oz.high 5 6 7 8 9
## FALSE 0.96153846 1.00000000 0.76923077 0.73076923 0.93103448
## TRUE 0.03846154 0.00000000 0.23076923 0.26923077 0.06896552
## Sum 1.00000000 1.00000000 1.00000000 1.00000000 1.00000000
转换成百分比,将小数四舍五入转化为百分数,保留两位小数点
round(100 * aiq.marprop, 2)
## Month
## Oz.high 5 6 7 8 9
## FALSE 96.15 100.00 76.92 73.08 93.10
## TRUE 3.85 0.00 23.08 26.92 6.90
## Sum 100.00 100.00 100.00 100.00 100.00
pairs(airquality, panel = panel.smooth, main = "airquality data")
以 UCBAdmissions 数据集为例,使用 xtabs
函数把数据组织成列联表,先查看数据的内容
UCBAdmissions
## , , Dept = A
##
## Gender
## Admit Male Female
## Admitted 512 89
## Rejected 313 19
....
<- as.data.frame(UCBAdmissions)
UCBA2DF UCBA2DF
## Admit Gender Dept Freq
## 1 Admitted Male A 512
## 2 Rejected Male A 313
## 3 Admitted Female A 89
## 4 Rejected Female A 19
## 5 Admitted Male B 353
....
接着将 UCBA2DF
数据集转化为表格的形式
<- xtabs(Freq ~ Gender + Admit + Dept, data = UCBA2DF)
UCBA2DF.tab ftable(UCBA2DF.tab)
## Dept A B C D E F
## Gender Admit
## Male Admitted 512 353 120 138 53 22
## Rejected 313 207 205 279 138 351
## Female Admitted 89 17 202 131 94 24
## Rejected 19 8 391 244 299 317
将录取性别和院系进行对比
prop.table(margin.table(UCBA2DF.tab, c(1, 3)), 1)
## Dept
## Gender A B C D E F
## Male 0.30657748 0.20810108 0.12077295 0.15496098 0.07097733 0.13861018
## Female 0.05885559 0.01362398 0.32316076 0.20435967 0.21416894 0.18583106
男生倾向于申请院系 A 和 B,女生倾向于申请院系 C 到 F,院系 A 和 B 是最容易录取的。