R(04):第二章:2.4因子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/genome_denovo/article/details/82053284

《统计建模与R软件》薛毅

第2章 R软件的使用

总结:变量分为几种类型,同时提出因子的概念,提出三个函数factor(将变量变成因子,同时levels函数返回因子的”Levels”值,tables函数统计各类数据频数),tapply(对不同向量进行归类并总结),gl(将有规则长度的向量转换成因子)

2.4 因子

统计中的变量有几种重要类别:区间变量、名义变量和有序变量。区间变量取连续的数值,可进行求和、平均值等运算。名义变量和有序变量取离散值,可以用数值代表,可以是字符型值,其具体数值没有加减乘除的意义,不能用来计算,而只能用来分类或计数。名义变量如性别、省份、职业。有序变量如班级、名次。

2.4.1 factor()函数

离散型变量用因子来表示这种类型的变量,例如学生性别:
> sex <- c("M", "F", "M", "M", "F")
> sexf <- factor(sex); sexf
[1] M F M M F
Levels: F M
函数factor()的作用是将一个变量编码成为一个因子,其一般形式为:
factor(x, levels=sort(unique(x), na.last=TRUE), labels, exclude=NA, ordered=FLASE)
其中x是向量;levels是水平,可以自行指定各离散取值,不指定时由x的不同值来求得;labels可以用来指定各水平的标签,不指定时用各离散取值的对应字符串;exclude参数用来指定要转换为缺失值(NA)的元素值集合,如果指定来levels,则当因子的第i各元素等于水平中的第j个元素时,元素值取j,如果它的值没有出现在levels中,则对应因子元素值取NA;ordered取值为真(TRUE)时,表示因子水平时有次序的(按照编码次序),否则(默认值)是无次序的。
可以用is.factor()检验对象是否是因子,用as.factor()把一个向量转换成一个因子。用函数levels()可以得到因子的水平,如:
> levels(sex)
NULL #sex对象不存在levels标签所以返回NULL
> levels(sexf)
[1] "F" "M" #sexf对象存在levels标签,则返回levels的值
对于因子向量,可以用函数table()来统计各类数据的频数,例如:
> table(sex)
sex
F M
2 3
> table(sexf)
sexf
F M
2 3
不管是因子还是真实向量都可以返回各类数据的类型及频数

2.4.2 tapply()函数

tapply()可对不同向量进行归类并总结
例如,统计5名学生不同性别的身高平均数:
> sex <- c("M", "F", "M", "M", "F")
> height <- c(174, 165, 180, 171, 160)
> tapply(height, sex, mean) #height是向量X,sex是与X有相同长度的因子INDEX,mean时FUN计算函数。或sexf <- factor(sex); tapply(height, sexf, mean)
F M
162.5 175.0
函数apply()的一般使用格式为:
tapply(X, INDEX, FUN=NULL, …, simplify=TRUE)
其中X是一个对象,通常是一个向量;INDEX是与X有同样长度的因子;FUN是需要计算的函数;simplify是逻辑变量,取为TRUE(默认)或FALSE。

2.4.3 gl()函数

gl函数适合利用有规则长度的向量产生因子,用法为:
gl(n, k, lenght=n*k, labels=1:n, ordered=FLASE)
其中n为水平数;k为重复的次数;length为结果的长度;labels是一个n维向量,表示因子水平;ordered是逻辑变量,表示是否为有序因子,默认值为FALSE,例如:
> gl(5,5) #表示向量c(1,2,3)每个分量分别重复5次
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5
Levels: 1 2 3 4 5
> gl(3,2,15) #表示向量c(1,2,3)每个分量分别重复2次,但要保证长度为15,所以不断重复
[1] 1 1 2 2 3 3 1 1 2 2 3 3 1 1 2
Levels: 1 2 3

猜你喜欢

转载自blog.csdn.net/genome_denovo/article/details/82053284