文章目录
示例数据:
MASS包中的
birthwt数据集。
首先将数据集中的分类变量因子化,具体参考 这里。
频数表与列联表的生成
一维频数表
- 仅展现1个分类变量频数统计
- 语法:
table(数据框名$变量名)
> table(birthwt$low)
no yes
130 59
- 展现百分比,而非频数:
prop.table(频数表)
> prop.table(table(birthwt$low))
no yes
0.6878307 0.3121693 # 可使用round()保留小数,此处不再赘述
epiDisplay包中的tab1()函数:给出含百分比、累计百分比的一维频数表,并生成一个频数分布的条形图;语法为tab1(数据框名$变量名)
> tab1(birthwt$low)
birthwt$low :
Frequency Percent Cum. percent
no 130 68.8 68.8
yes 59 31.2 100.0
Total 189 100.0 100.0

二维列联表
- 又称为交叉表,展现了两个分类变量下的频数统计
- 也可以使用
table函数:table(数据框名$变量1,数据框名$变量2)
> table(birthwt$low,birthwt$smoke)
no yes
no 86 44
yes 29 30
- 生成边际频数 (行列subtotal汇总):
addmargins(频数表)
> addmargins(table(birthwt$low,birthwt$smoke))
no yes Sum
no 86 44 130
yes 29 30 59
Sum 115 74 189
epiDisplay包中的tabpct()函数:给出含边际频数、按行&按列求百分比的列联表,还给出一个马赛克图;语法为tabpct(数据框名$变量1,数据框名$变量2)
> tabpct(birthwt$low,birthwt$smoke)
Original table
birthwt$smoke
birthwt$low no yes Total
no 86 44 130
yes 29 30 59
Total 115 74 189
Row percent
birthwt$smoke
birthwt$low no yes Total
no 86 44 130
(66.2) (33.8) (100)
yes 29 30 59
(49.2) (50.8) (100)
Column percent
birthwt$smoke
birthwt$low no % yes %
no 86 (74.8) 44 (59.5)
yes 29 (25.2) 30 (40.5)
Total 115 (100) 74 (100)

本文介绍了如何使用R语言进行频数表与列联表的生成,包括一维、二维和多维列联表,并详细讲解了独立性检验,如χ2检验、相对危险度(RR)、比值比(OR)、Mantel-Haenszel检验和McNemar检验,提供了一系列实用的R包和函数。
734

被折叠的 条评论
为什么被折叠?



