概述
目录
一、一维列联表
二、二维列联表
三、多维列联表
上篇介绍了连续变量的统计描述的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可以获得百分比
4
6
8
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 1
4 3 8
6 4 3
8 12 2
> prop.table(table(mtcars$cyl,mtcars$am))
#各单元占总体百分比
0
1
4 0.09375 0.25000
6 0.12500 0.09375
8 0.37500 0.06250
> prop.table(table(mtcars$cyl,mtcars$am),1)#各单元占行百分比
0
1
4 0.2727273 0.7272727
6 0.5714286 0.4285714
8 0.8571429 0.1428571
> prop.table(table(mtcars$cyl,mtcars$am),2)#各单元占列百分比
0
1
4 0.1578947 0.6153846
6 0.2105263 0.2307692
8 0.6315789 0.1538462
2、xtabs()函数
表达式为:xtabs(~A+B,data=mydata),结果同table()函数一致。求得各单元百分比用prop.table()函数。addmargins()函数可求边际和。
> xtabs(~cyl+am,data = mtcars)
am
cyl
0
1
4
3
8
6
4
3
8 12
2
> addmargins(xtabs(~cyl+am,data = mtcars)) #addmargins()函数可以求边际和
am
cyl
0
1 Sum
4
3
8
11
6
4
3
7
8
12
2
14
Sum 19 13
32
3、CrossTable()函数
> 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)
, ,
= 3
0
1
4
1
0
6
2
0
8 12
0
, ,
= 4
0
1
4
2
6
6
2
2
8
0
0
, ,
= 5
0
1
4
0
2
6
0
1
8
0
2
> xtabs(~cyl+am+gear,data = mtcars)
, , gear = 3
am
cyl
0
1
4
1
0
6
2
0
8 12
0
, , gear = 4
am
cyl
0
1
4
2
6
6
2
2
8
0
0
, , gear = 5
am
cyl
0
1
4
0
2
6
0
1
8
0
2
最后
以上就是无奈钢笔为你收集整理的R语言分类变量的统计描述一、一维列联表二、二维列联表三、多维列联表的全部内容,希望文章能够帮你解决R语言分类变量的统计描述一、一维列联表二、二维列联表三、多维列联表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复