文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

R语言中的因子类型详解

2024-04-02 19:55

关注

一、Factor函数


#函数factor可以把一个向量编码为一个因子,其一般形式为:
#factor(x,levels=sort(unique(x),na.last=TRUE),labels,exculde=NA,order=FALSE)
#其中x是向量,levels是水平,可以自行指定各离散的取值,不指定时由x的不同值来表示,labels可以用来指定各水平的标签
#不指定时用各离散取值的对应字符串
 
sex<-c("M","F","M","M","F")
factor(sex)
#使用is.factor来判断对象是否为因子类型
is.factor(sex)
#使用as.factor来将对象转换为因子类型
sex.factor<-as.factor(sex)
#使用levels来取得因子中的水平
levels(sex.factor)
# [1] "F" "M"

二、tapply函数


#函数tapply()
#当我们知道5个人的性别以及5个人的身高的时候,就能计算出每个性别下的平均身高
height<-c(170,175,180,165,168)
 
tapply(height,sex.factor,mean)
# F        M 
# 171.5000 171.6667 
 
#tapply 的使用格式为tapply(x,index,fun) 其中x为对象,index为与x具有相同个数的因子类型,fun为指定的方法

三、gl()函数


#gl()函数
#gl函数能很快的产生因子,其基本用法为:gl(n,k,length=n*k,labels=1:n,order=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

补充:R语言中因子(factor)转换成数值型(numeric)的问题

一直觉得只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如

x<-“123”,x为character类型,而as.numeric(x)则为numeric类型的123。但是因子(factor)类型却不一样。

a<-factor(c(100,200,300,301,302,400,10)),它们的值分别为100 200 300 301 302 400 10,然而as.numeric(a)对应的值并非100 200 300 301 302 400 10,而是2 3 4 5 6 7 1。因子(factor)转换成数值型(numeric)的规则是这样的:

一共有n个数,那么转换后的数字就会在1——n中取值,数字最小的取一,次小的取二,以此类推。

那么如何让因子(factor)类型里的数值转换对应的数值型呢?


as.numeric(as.character(factorname))
as.numeric(levels(factorname)[factorname])

以上代码都可以实现将因子(factor)类型里的数值转换对应的数值型,思路都是先转换成字符型然后再转换成数值型。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯