加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

R语言中的因子(factor)和有序变量(ordered)

(2016-12-27 21:01:45)
标签:

r语言

因子(factor)为处理分类数据提供的一种有效的方法,因子是一个对等长的其他向量元素进行分类(分组)的向量对象。主要使用离散型随机变量(包括名义变量和有序变量)。例如
> f<-c(1,2,3,2,3,2,1,2,3,1,2,3,2);f
 [1] 1 2 3 2 3 2 1 2 3 1 2 3 2
#函数factor用来把一个向量编码成因子,其一般形式为factor(x = character(), levels, labels = levels,
       exclude = NA, ordered = is.ordered(x), nmax = NA)
x是向量,levels是水平,可以指定各个离散取值,不指定时由x的不同值取得。labels可以用来指定个水平的标签,exclude用来指定要转换为缺省值NA的元素值集合,ordered取值为真时,表示因子水平是有序的,否则无序。
> fac<-factor(f);fac
 [1] 1 2 3 2 3 2 1 2 3 1 2 3 2
Levels: 1 2 3
> fac<-factor(f,labels="f");fac
 [1] f1 f2 f3 f2 f3 f2 f1 f2 f3 f1 f2 f3 f2
Levels: f1 f2 f3
fac就是因子向量。
> levels(fac)
[1] "f1" "f2" "f3"
> table(fac)  #统计各水平数据的频数
fac
f1 f2 f3 
 3  6  
对于有序变量(ordinal variable),函数ordered()会更实用
> ordered(fac)
 [1] f1 f2 f3 f2 f3 f2 f1 f2 f3 f1 f2 f3 f2
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)
       m        
3.000000 3.285714


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有