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=FALSE)
其中x是向量,levels是水平,可以自行指定各离散取值,不指定时由x的不同值来求得。labels可以用来指定各水平的标签,不指定时用各离散取值的对应字符串。exclude参数用来指定要转换为缺失值(NA)的元素值集合,如果指定了levels,则因子的第i个元素当它等于水平中第j个时元素值取“j”,如果它的值没有出现在levels中,则对应因子元素值取NA;ordered取值为真(TRUE)时,表示因子水平是有次序的;否则(缺省值)是无次序的
> sex.level<-levels(sexf);sex.level
[1] "F" "M"
> sex.tab<-table(sexf);sex.tab
sexf
F M
2 3
2.4.2 tapply()函数
> height<- c(174,165,180,171,160)
> tapply(height,sex,mean)
F M
162.5 175.0
2.4.3 gl()函数
gl()函数可以方便地产生因子,其一般用法是
gl(n,k,length=n*k,labels=1:n,ordered=FALSE)
其中n为水平数,k为重复的次数,length为结果的长度,labels是一个n维向量,表示因子水平,ordered是逻辑变量,表示是否为有序因子,缺省值为FALSE
> gl(3,5)
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3
Levels: 1 2 3
> gl(3,1,15)
[1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
Levels: 1 2 3