搜索
查看: 6171|回复: 8

[coding] 用R进行变量重编码时新生成的变量的值全部显示为NA如何.....

[复制链接]

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
发表于 2017-2-2 11:26:01 | 显示全部楼层 |阅读模式
本人为R新入门菜鸟,才开始学R语言,在进行R语言实战重编码这一知识点时遇到了问题,搜索了很多社区未得其解,向生信技能树的各位大神求助
问题是这样的,我用library(openxlsx)导入我的Excel表格:mydata <- read.xlsx2("test.xls",1,header=T),然后按照步骤编码异常年龄值:mydata$age[mydata$age==99] <- NA,接着就是按年龄分界编码年龄段:1、mydata$agecat[mydata$age > 55] <- "elder”
2、mydata$agecat[mydata$age >=30 & mydata$age <=55] <- "middle aged"
3、mydata$agecat[mydata$age<30] <- "yound",但每一个执行下面都提示(如图):warning message: In ops.factor(...):‘>’ not meaningful for factors.
然后保存工作表后,新变量age和agecat的值全部显示为"NA",而不是年龄仅为99的为NA,以及分成elder、middle aged、yound三组。求助生信的各位热心大神看看什么问题,感谢!祝大家新年快乐!工作顺心如意!

图1

图1

R实战的说明

R实战的说明

新变量结果

新变量结果

与一群努力的人在一起,还有什么理由不努力
回复

使用道具 举报

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2017-2-2 12:40:07 | 显示全部楼层
最后在Jimmy大神的热心及耐心帮助下解决了,感谢非常nice的“CEO” Jimmy大神,原因还是他开始说的:“
初学者用R来交互文件的时候,两个坑一定要跨过,首先是stringsAsFactors =F,然后是fill=T !
你这个问题在于,你读取文本文件把字符串读成了factor了,所以需要加上stringsAsFactors =F才行!”

另外很重要的一个原因:在选择读取数据的包(packages)时,不懂一定要help一下看一下它的参数设置,还有在编写代码是要注意是英文输入,此外,在导入数据要做下一步操作是时可以先用str()函数看一下你要处理的变量的属性,这样也是一个方向,我在导入的时候数据属性不对,转化为factors了,所以有重新再脚本里面重写了一边代码,特别是stringsAsFactors =F这个,后面就运行畅通了,其实换成CSV格式,问题就没那么多,但我就是想多学点,想解决Excel导入的问题,Excel直接处理会有很多问题,但对初学者来说很多是感觉无厘头的,幸好有这个平台,以及nice的Jimmy。谢谢。
与一群努力的人在一起,还有什么理由不努力
回复 支持 1 反对 0

使用道具 举报

633

主题

1189

帖子

4054

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4054
发表于 2017-2-2 12:04:39 | 显示全部楼层
medical 发表于 2017-2-2 11:54
还是不行,奇怪

额,步骤里面有这个?编码异常年龄值:mydata$age[mydata$age==99] <- NA
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 1 反对 0

使用道具 举报

633

主题

1189

帖子

4054

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4054
发表于 2017-2-2 11:29:11 | 显示全部楼层
初学者用R来交互文件的时候,两个坑一定要跨过,首先是stringsAsFactors =F,然后是fill=T !
你这个问题在于,你读取文本文件把字符串读成了factor了,所以需要加上stringsAsFactors =F才行!
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2017-2-2 11:33:57 | 显示全部楼层
感谢Jimmy老师热心的帮助,论坛超级棒
与一群努力的人在一起,还有什么理由不努力
回复 支持 反对

使用道具 举报

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2017-2-2 11:36:47 | 显示全部楼层
第一张图片是传错的,命令中的“年龄”全部为“age”,(原来表格中命名为“年龄”,后面担心中文的原因改为了“age”)
与一群努力的人在一起,还有什么理由不努力
回复 支持 反对

使用道具 举报

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2017-2-2 11:54:30 | 显示全部楼层
Jimmy 发表于 2017-2-2 11:29
初学者用R来交互文件的时候,两个坑一定要跨过,首先是stringsAsFactors =F,然后是fill=T !
你这个问题在 ...

还是不行,奇怪
与一群努力的人在一起,还有什么理由不努力
回复 支持 反对

使用道具 举报

7

主题

22

帖子

126

积分

注册会员

Rank: 2

积分
126
 楼主| 发表于 2017-2-2 12:06:09 | 显示全部楼层
对,有这个步骤
与一群努力的人在一起,还有什么理由不努力
回复 支持 反对

使用道具 举报

633

主题

1189

帖子

4054

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4054
发表于 2017-2-2 12:08:50 | 显示全部楼层
medical 发表于 2017-2-2 12:06
对,有这个步骤

你给的截图里面没有,你仔细看看,人家是设置了一个新的变量agecat来赋值,你是直接把age给赋值了,这完全不一样啊
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2020-3-31 10:53 , Processed in 0.033420 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.