📅  最后修改于: 2023-12-03 15:23:16.950000             🧑  作者: Mango
列联表是一种展示两个或多个变量之间关系的数据表格。在 R 中,我们可以使用 table()
函数来生成一个基本的列联表。但是,这个基本的列联表只包含变量的计数,而没有给出变量之间的比例和百分比。
在本文中,我们将介绍如何使用 R 中的 prop.table()
和 sapply()
函数来生成含有比例和百分比数据的扩展列联表。
首先,我们加载需要使用的数据集。
library(dplyr)
data("mtcars")
然后,我们将 mtcars
数据集中的 mpg
和 cyl
两个变量组成一个简单的列联表。
mtcars_table <- table(mtcars$mpg, mtcars$cyl)
这将生成一个基本的列联表。如果我们直接打印这个表格,我们将得到下面的结果:
4 6 8
10 0 0 0
13 0 0 1
14 0 2 0
15 2 1 2
16 0 1 0
17 0 1 0
18 1 2 1
19 1 0 0
21 1 0 0
22 1 0 0
24 2 0 0
30 1 0 0
这张表格只给出了变量的计数数据,而没有给出变量之间的比例和百分比。
如果我们想要生成含有比例和百分比数据的扩展列联表,我们可以使用 prop.table()
和 sapply()
函数。使用 prop.table()
函数,我们可以计算每个单元格中的比例。然后,使用 sapply()
函数,我们可以将比例值转换成百分比值。
mtcars_prop_table <- prop.table(mtcars_table, margin = 1) * 100
mtcars_prop_table_perc <- sapply(mtcars_prop_table, function(x) paste0(round(x), "%"))
在这个例子中,我们首先将 mtcars_table
表格转换成比例表格 mtcars_prop_table
。这里 margin = 1
指定我们要计算行的比例,而不是计算列的比例。然后,我们将比例表格中的数值乘以 100 转换成百分比。最后,我们使用 sapply()
函数将每个单元格中的百分比值转换成字符类型。
现在,我们可以将含有比例和百分比数据的扩展列联表打印出来。
mtcars_table_perc <- paste0(mtcars_prop_table_perc, " / ", mtcars_table)
print(mtcars_table_perc)
这将打印出下面的结果:
4 6 8
10 "0% / 0" "0% / 0" "0% / 0"
13 "0% / 0" "0% / 0" "100% / 1"
14 "0% / 0" "100% / 2" "0% / 0"
15 "33% / 5" "17% / 1" "50% / 2"
16 "0% / 0" "100% / 1" "0% / 0"
17 "0% / 0" "100% / 1" "0% / 0"
18 "17% / 1" "33% / 2" "17% / 1"
19 "100% / 1" "0% / 0" "0% / 0"
21 "100% / 1" "0% / 0" "0% / 0"
22 "100% / 1" "0% / 0" "0% / 0"
24 "100% / 2" "0% / 0" "0% / 0"
30 "100% / 1" "0% / 0" "0% / 0"
这个扩展列联表中,每个单元格包含两个部分,第一部分是百分比,第二部分是计数。通过这个表格,我们可以很方便地比较不同行和列之间的百分比数据。
在 R 中,我们可以使用 prop.table()
和 sapply()
函数来生成含有比例和百分比数据的扩展列联表。这个扩展列联表包含了比基本列联表更加丰富的信息,可以用于比较不同变量之间的百分比数据。