目录
一、一维列联表
二、二维列联表
三、多维列联表
上篇介绍了连续变量的统计描述的R语言相关函数,计算数值的相关统计指标。本文介绍分类变量的统计描述及如何在R语言中实现。
不同于连续变量,在统计分析中,分类变量的统计描述主要是汇总分类变量各类别例数及百分比。后续举例以R自带数据集mtcars为例。
一、一维列联表
1、table()函数
在对分类变量的统计描述中,table()函数是我们常用的一维列联表函数。
table(mtcars$cyl) 可以获取各类的频数。值得注意的是,如果想显示缺失数据,需要加上参数useNA="ifany"。
> table(mtcars$cyl)4 6 8 11 7 14> table(mtcars$am)0 1 19 13
2、prop.table()函数
prop.table(table(mtcars$cyl)) 可以获得各类占总体的频率。
> prop.table(table(mtcars$cyl))4 6 8 0.34375 0.21875 0.43750 > prop.table(table(mtcars$cyl))*100 #*100可以获得百分比468 34.375 21.875 43.750
二、二维列联表
1、table()函数
table(A,B) ,A是行变量,B是列变量;
由结果可知,am=0列,cyl=4、6、8的频数依次是3、4、12;am=1列,cyl=4、6、8频数依次是8、3、2。
> table(mtcars$cyl,mtcars$am)0 14 3 86 4 38 12 2> prop.table(table(mtcars$cyl,mtcars$am)) #各单元占总体百分比0 14 0.09375 0.250006 0.12500 0.093758 0.37500 0.06250> prop.table(table(mtcars$cyl,mtcars$am),1)#各单元占行百分比0 14 0.2727273 0.72727276 0.5714286 0.42857148 0.8571429 0.1428571> prop.table(table(mtcars$cyl,mtcars$am),2)#各单元占列百分比0 14 0.1578947 0.61538466 0.2105263 0.23076928 0.6315789 0.1538462
2、xtabs()函数
表达式为:xtabs(~A+B,data=mydata),结果同table()函数一致。求得各单元百分比用prop.table()函数。addmargins()函数可求边际和。
> xtabs(~cyl+am,data = mtcars)amcyl 0 14 3 86 4 38 12 2> addmargins(xtabs(~cyl+am,data = mtcars)) #addmargins()函数可以求边际和amcyl 0 1 Sum4 3 8 116 4 3 78 12 2 14Sum 19 13 32
3、CrossTable()函数
gmodels包中的CrossTable()函数也可以创建二维列联表。其函数表达式和table()函数相似。
> library(gmodels)> CrossTable(mtcars$cyl,mtcars$am)Cell Contents|-------------------------|| N || Chi-square contribution || N / Row Total || N / Col Total || N / Table Total ||-------------------------|Total Observations in Table: 32 | mtcars$am mtcars$cyl | 0 | 1 | Row Total | -------------|-----------|-----------|-----------|4 | 3 | 8 | 11 | |1.909 |2.790 | | |0.273 |0.727 |0.344 | |0.158 |0.615 | | |0.094 |0.250 | | -------------|-----------|-----------|-----------|6 | 4 | 3 | 7 | |0.006 |0.009 | | |0.571 |0.429 |0.219 | |0.211 |0.231 | | |0.125 |0.094 | | -------------|-----------|-----------|-----------|8 | 12 | 2 | 14 | |1.636 |2.391 | | |0.857 |0.143 |0.438 | |0.632 |0.154 | | |0.375 |0.062 | | -------------|-----------|-----------|-----------|Column Total | 19 | 13 | 32 | |0.594 |0.406 | | -------------|-----------|-----------|-----------|
三、多维列联表
如果有三个及以上的分类变量进行交叉汇总频数,就要生成多维列联表。table()函数和xtabs()函数都可以基于三个或者更多的分类变量生成多维列联表。prop.table()、addmargins()函数都可以推广使用。
> table(mtcars$cyl,mtcars$am,mtcars$gear), , = 30 14 1 06 2 08 12 0, , = 40 14 2 66 2 28 0 0, , = 50 14 0 26 0 18 0 2> xtabs(~cyl+am+gear,data = mtcars), , gear = 3amcyl 0 14 1 06 2 08 12 0, , gear = 4amcyl 0 14 2 66 2 28 0 0, , gear = 5amcyl 0 14 0 26 0 18 0 2
如果觉得《R语言分类变量的统计描述》对你有帮助,请点赞、收藏,并留下你的观点哦!