📜  在 R 中使用比例和百分比扩展列联表(1)

📅  最后修改于: 2023-12-03 15:23:16.950000             🧑  作者: Mango

在 R 中使用比例和百分比扩展列联表

简介

列联表是一种展示两个或多个变量之间关系的数据表格。在 R 中,我们可以使用 table() 函数来生成一个基本的列联表。但是,这个基本的列联表只包含变量的计数,而没有给出变量之间的比例和百分比。

在本文中,我们将介绍如何使用 R 中的 prop.table()sapply() 函数来生成含有比例和百分比数据的扩展列联表。

代码实现

首先,我们加载需要使用的数据集。

library(dplyr)
data("mtcars")

然后,我们将 mtcars 数据集中的 mpgcyl 两个变量组成一个简单的列联表。

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() 函数来生成含有比例和百分比数据的扩展列联表。这个扩展列联表包含了比基本列联表更加丰富的信息,可以用于比较不同变量之间的百分比数据。