2.4 因子

2.4 因子

统计中变量:区间变量,名义变量和有序变量

区间变量取连续的数值,可以进行求和平均值等运算

名义变量和有序变量离散值可以是数值,也可以字符串型,

在具体数值没有加减乘除的意义,不能用来计算,而只能分类和计数。

名义变量如性别,省份,职业,有序变量如班级,名次。

2.4.1 factor()函数

因为离散值变量有各种不同的表示方法,在R软件中,为了统一起见,使用因子(factor)来表示这种类型变量。

例如:

sex<-c("M","F","M","M","F")
sexf<-factor(sex);sexf #可以获取数据中水平

函数factor()用来把一个向量编码成为一个因子.其一般形式为:

factor(x,levels = sort(unique(x),na.last=TRUE),labels,exclude = NA,ordered = FALSE)

X向量数据,一般是少量区分的数据值

level是水平,可以自动指定各离散取值,不指定时由x的不同值来求得。

labels可以用来指定各水平的标签,不指定是用个离散取值的对应字符串

exclude参数用来指定要转换为缺失值(NA)的元素值集合。

如果指定levels,则因子的第i个元素当它等于水平中第j个时元素值取j,

如果它的值没有出现在levels中,则对应因子元素值取NA。

ordered取值为真时,表示因子水平有次序的,否则是无次序的。

is.factor()检验对象是否因子。

as.factor()把一个向量转换成一个因子.

函数levels()可以得到因子水平

sex.level<-levels(sexf);sex.level

对于因子向量,可用函数table()来统计各类数据的频数。

sex.tab<-table(sex);sex.tab

2.4.2 tapply()函数

例如:已知5名学生的性别,身高,分组求身高的平均值

height<-c(174,165,180,171,160)
tapply(height,sex,mean)

tapply()一般形式:

tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)

x是一个对象,index是与x有同样长度的因子,fun是需要计算的函数,

simplify是逻辑变量,取值为TRUE和FALSE

2.4.3 gl()函数

gl()一般用于产生因子

gl(n, k, length = n*k, labels = seq_len(n), ordered = FALSE)

n为水平数,k为每个水平重复次数,length为结果长度

labels是n维向量,表示因子水平,

ordered是逻辑变量,表示是否为有序因子,缺失值为FALSE

gl(3,5)
gl(3,1,15)

推荐阅读更多精彩内容