R语言中的因子(factor)和有序变量(ordered)
(2016-12-27 21:01:45)
标签:
r语言 |
因子(factor)为处理分类数据提供的一种有效的方法,因子是一个对等长的其他向量元素进行分类(分组)的向量对象。主要使用离散型随机变量(包括名义变量和有序变量)。例如
[1] 1 2 3 2 3 2 1 2 3 1 2 3 2
exclude = NA, ordered = is.ordered(x), nmax =
NA)
[1] 1 2 3 2 3 2 1 2 3 1 2 3 2
[1] f1 f2 f3 f2 f3 f2 f1 f2 f3 f1 f2 f3
f2
3 6
4
[1] f1 f2 f3 f2 f3 f2 f1 f2 f3 f1 f2 f3
f2
m
w
> f<-c(1,2,3,2,3,2,1,2,3,1,2,3,2);f
#函数factor用来把一个向量编码成因子,其一般形式为factor(x = character(), levels,
labels = levels,
x是向量,levels是水平,可以指定各个离散取值,不指定时由x的不同值取得。labels可以用来指定个水平的标签,exclude用来指定要转换为缺省值NA的元素值集合,ordered取值为真时,表示因子水平是有序的,否则无序。
> fac<-factor(f);fac
Levels: 1 2 3
> fac<-factor(f,labels="f");fac
Levels: f1 f2 f3
fac就是因子向量。
> levels(fac)
[1] "f1" "f2" "f3"
> table(fac) #统计各水平数据的频数
fac
f1 f2 f3
对于有序变量(ordinal variable),函数ordered()会更实用
> ordered(fac)
Levels: f1 < f2 < f3
函数tapply()可以按因子向量的水平分组计算统计量,一般形式为
tapply(X, INDEX, FUN = NULL, ..., simplify = TRUE)
INDEX是因子向量,FUN是需要计算的函数,如mean、sum、range等
simplify取TURE在一行内显示计算结果,否则分行显示。tapply()的功能是对向量x按因子向量INDEX的水平分组计算函数FUN.
设向量g表示性别
g<-c("w","m","w","m","w","m","w","m","w","m","w","m","w","m") #w女性,m男性
job<-factor(c(3,1,2,3,1,2,3,1,2,3,1,2,3,1)) #1 clerical;2 custodial ; 3
manager
salary<-c(5,3,1,5,3,1,5,3,1,5,3) #单位为万元
> tapply(salary,job,mean)
1 2 3
3 1 5
> tapply(salary,g,mean)
3.000000 3.285714