📜  R编程中的列联表

📅  最后修改于: 2022-05-13 01:55:31.484000             🧑  作者: Mango

R编程中的列联表

先决条件:R 编程中的数据结构
联表非常有用,可以将大量观察值压缩成更小的数据,从而更容易维护表格。列联表显示一个变量在行中的分布,另一个在其列中的分布。列联表不仅对压缩数据有用,而且还显示变量之间的关系。它们是一种汇总分类变量的方法。处理单个表的列联表称为复杂列联表或平面列联表。

制作列联表

列联表是一种重绘数据并将其组合成表格的方法。并且,它以允许读者获得原始数据的整体摘要的方式显示原始数据的布局。 table()函数在 R 中用于创建列联表。 table()函数是 R 中最通用的函数之一。它可以将任何数据结构作为参数并将其转换为表。原始数据越复杂,生成的列联表就越复杂。

从向量创建列联表

在 R 中,向量是给定长度的基本数据类型的有序集合。这里唯一的关键是向量的所有元素必须是相同的数据类型,例如同构数据结构。向量是一维数据结构。它是最简单的数据对象,您可以从中创建列联表。

例子:

Python3
# R program to illustrate
# Contingency Table
 
# Creating a vector
vec = c(2, 4, 3, 1, 6, 3, 2, 1, 4, 5)
 
# Creating contingency table from vec using table()
conTable = table(vec)
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table from data using table()
conTable = table(df)
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table by selecting a column
conTable = table(df$Name)
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table by selecting rows
conTable = table(as.matrix(df[2:3, ]))
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Rotating the data frame
newDf = t(df)
 
# Creating contingency table by rotating data frame
conTable = table(newDf)
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a matrix
A = matrix(
  c(1, 2, 4, 1, 5, 6, 2, 4, 7),
  nrow = 3,
  ncol = 3
)
 
# Creating contingency table using matrix object
conTable = table(A)
print(conTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a matrix
A = matrix(
  c(1, 2, 4, 1, 5, 6, 2, 4, 7),
  nrow = 3,
  ncol = 3
)
 
# Converting Matrix Objects into tables
newTable = as.table(A)
print(newTable)


Python3
# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Converting data frame object to matrix object
modifiedDf = as.matrix(df)
 
# Converting Matrix Objects into tables
newTable = as.table(modifiedDf)
print(newTable)


输出:

vec
1 2 3 4 5 6 
2 2 2 2 1 1 

在给定的程序中,首先发生的是当我们对向量执行 table() 命令时,它会对向量值进行排序,并打印向量中给定的每个元素的频率。

从数据创建列联表

现在我们将看到一个简单的示例,它提供了一个数据框,该数据框在一列中包含字符值,并在其中一列中包含一个因子。这一列因素包含字符变量。为了从数据创建我们的列联表,我们将使用 table()。在下面的示例中,table()函数返回一个列联表。基本上,它返回分类变量的表格结果。

例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table from data using table()
conTable = table(df)
print(conTable)

输出:

Gender
 Name    Female Male
 Amiya      0    1
 Asish      0    1
 Rosy       1    0

创建自定义列联表

R中的列联表可以只使用一部分数据来创建,这与从所有行和列中收集数据相反。我们可以使用以下方式在 R 中创建自定义列联表:

  • 在列联表中使用数据框的列
  • 在列联表中使用数据框的行
  • 通过在 R 中旋转数据帧
  • 从 R 中的矩阵对象创建列联表
  • 在列联表中使用数据框的列:在 table() 命令的帮助下,我们能够指定可以创建列联表的列。为此,您只需在 table() 命令的参数中传递向量对象的名称。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table by selecting a column
conTable = table(df$Name)
print(conTable)

输出:

Amiya Asish  Rosy 
    1     1     1 

从输出中,您可以注意到 table() 命令按字母顺序对名称及其出现频率进行排序。

  • 在列联表中使用数据框的行我们不能像在“使用列”部分中那样直接使用数据框的行来创建列联表。借助矩阵,我们可以通过查看数据框的行来创建列联表。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Creating contingency table by selecting rows
conTable = table(as.matrix(df[2:3, ]))
print(conTable)

输出:

Asish Female   Male   Rosy 
  1      1      1      1 
  • 通过在 R 中旋转数据框:我们还可以通过在 R 中旋转数据框来创建列联表。我们可以执行数据的旋转,即使用t()命令对数据进行转置。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Rotating the data frame
newDf = t(df)
 
# Creating contingency table by rotating data frame
conTable = table(newDf)
print(conTable)

输出:

newDf
Amiya  Asish Female   Male   Rosy 
  1      1      1      2      1 
  • 从 R 中的矩阵对象创建列联表矩阵是行和列中数字的矩形排列。在矩阵中,我们知道行是水平运行的,列是垂直运行的。矩阵是二维的同质数据结构。我们可以使用这个矩阵对象创建一个列联表。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a matrix
A = matrix(
  c(1, 2, 4, 1, 5, 6, 2, 4, 7),
  nrow = 3,
  ncol = 3
)
 
# Creating contingency table using matrix object
conTable = table(A)
print(conTable)

输出:

A
1 2 4 5 6 7 
2 2 2 1 1 1 

将对象转换为表格

如上所述,表格是一种特殊类型的数据对象,它与矩阵类似,但也有一些不同之处。

  • 将矩阵对象转换为表格:我们可以使用as.table()命令直接将矩阵对象转换为表格。只需将矩阵对象作为参数传递给as.table()命令。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a matrix
A = matrix(
  c(1, 2, 4, 1, 5, 6, 2, 4, 7),
  nrow = 3,
  ncol = 3
)
 
# Converting Matrix Objects into tables
newTable = as.table(A)
print(newTable)

输出:

A B C
A 1 1 2
B 2 5 4
C 4 6 7
  • 将数据框对象转换为表格:我们不能使用as.table()命令直接将数据框对象转换为表格。在数据框的情况下,可以将对象转换为矩阵,然后可以使用as.table()命令将其转换为表格。
    例子:

Python3

# R program to illustrate
# Contingency Table
 
# Creating a data frame
df = data.frame(
  "Name" = c("Amiya", "Rosy", "Asish"),
  "Gender" = c("Male", "Female", "Male")
)
 
# Converting data frame object to matrix object
modifiedDf = as.matrix(df)
 
# Converting Matrix Objects into tables
newTable = as.table(modifiedDf)
print(newTable)

输出:

Name  Gender
A Amiya Male  
B Rosy  Female
C Asish Male