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