在R语言中,因子是处理分类数据的一种数据结构。例如,处理糖尿病患者的类型、性别、学历、职业和省份等。本节将介绍因子的概念及应用,如何创建因子和调整因子水平。
因子用于对数据进行分类,并将其存储为不同级别的数据对象。其命名源于统计学中的名义变量。
在统计学中,变量分为区间变量(连续变量)、有序变量和名义变量(分类变量)。
区间变量(连续变量):连续的数值变量,如身高、体重等,可以进行求和、求平均值等运算。
名义变量:没有顺序之分的类别变量,如性别、民族、省份、职业等。
有序变量:有次序逻辑关系的变量。例如,排名,第一第二第三,有先后顺序;高血压分级,0=正常,1=正常高值,2=1级高血压,3=2级高血压,4=3级高血压,有高低顺序;体积,大中小,有大小顺序。
其中,名义变量和有序变量在R语言中称为因子(factor),因子表示向量元素的类别,根据数字和字母顺序自动排序,如果是数值型向量,因子会将数据重新编码并存储为水平的序号。因子的取值称为水平(level),水平表示向量中不同值的记录。
在R语言中,因子主要应用在以下几个方面:
计算频数。
独立性检验。
相关性检验。
方差分析。
主成分分析。
因子分析。
在R语言中创建因子主要使用factor()和gl()函数,下面分别进行介绍。
factor()函数可以将变量转换为因子,如果进行排序,则需要设置ordered参数为TRUE。
下面创建两种不同类型的因子,示例代码如下:
运行程序,结果如图4.57所示。
图4.57 创建因子
从运行结果可知:字符型向量和数值型向量都被转换成因子,并且运行结果中还多了一行如“Levels:类别1类别2类别3类别4类别5”,这行在因子中叫作因子水平,表示向量中不同值的记录,根据数字和字母顺序自动排序,对于数值型向量会重新编码并存储为水平序号。
创建因子还可以使用gl()函数,该函数用于通过指定其级别的模式来生成因子。语法格式如下:
gl(x, k, length, labels, ordered)
参数说明如下。
x:表示级别数。
k:表示重复次数。
length:表示结果长度。
labels:表示向量标签,可选参数。
ordered:表示用于对级别进行排序的布尔值。
例如,创建级别为2、重复次数为10和长度为20的因子变量,示例代码如下:
gl(2, 10, 20, labels = c("男","女"))
运行程序,结果如下:
[1] 男 男 男 男 男 男 男 男 男 男 女 女 女 女 女 女 女 女 女 女 Levels: 男 女
从上述举例可以看出,因子水平默认是从小到大排序的。因子水平一般按字母顺序或数字大小排序,或者由factor()函数中的levels参数指定排序顺序。在实际数据分析过程中,有时需要重新排列因子水平并进行差异化分析。
重新调整因子水平主要使用relevel()函数。如在员工满意度调查中调整满意度顺序,示例代码如下:
代码解析
第6行代码:unique()函数用于去重。
运行程序,结果如图4.58所示。
图4.58 调整因子水平