可以使用table()函数创建、修改、编辑表格对象,还可以以此函数创建更复杂的列联表。
一、制作列联表
1.对向量创建列联表
对于向量data=3 5 7 5 3 2 6 8 5 6 9 4 5 7 3 4,创建的列联表形式如下
> table(data)
data
2 3 4 5 6 7 8 9
1 3 2 4 2 2 1 1
第一行为向量中出现的数字,第二行为数字的频数
如果是字符向量也是一样的,如:
data2="mow" "mow" "mow" "mow" "mow" "unmow" "unmow" "unmow" "unmow"
> table(data2)
data2
mow unmow
5 4
2.对数据框创建列联表
如果对数据框直接使用table()函数,得到的列联表通常比较复杂,当数据框的数据都是数值时,情况会更复杂,甚至会分裂为多个表格。
我们可以通过选择列,从数据框中提取想要的列,进而组成列联表,这需要使用$符号进行选择,并使用dnn=进行行列命名
如果要在数据框中提取想要的行,首先要将数据框转换成矩阵,再进行提取,转换的方法有使用as.matrix()或者使用转置函数t()。
3.对矩阵创建列联表
可以直接使用table()函数对矩阵,但是得到的结果和对向量使用一样,只是每个数字的频数列表,矩阵不能使用$符号,但是可以使用[]选择行或列。
二、创建复杂的列联表
table()函数可以设置条件以制作不同的列联表,但是这样的话,结果会被分为若干个表格,如果使用ftable(),则可以避免此类情况,使用ftable()得到的结果数据类型为ftable()。
ftable()除了可以使用$符合进行选择变量之外,还有一个通用格式为:
ftable(column~row1+row2+...,data)
~符号用来创建一个公式,左侧为列变量、右侧为行变量,多个行或列变量可以通过+组合。
三、在列联表的基础上再制表
如果面对一个已经是列联表的对象,只是希望将其重新组合,那么需要使用xtabs()函数,
格式为:xtabs(freq~cateories11+cateories2+...,data)
~左侧为频数,右侧为分类,默认第一个变量为行分类、第二个变量为列分类