楼主: 丘延君
1600 1

[学习分享] R语言新手解惑之:为什么我的字符串造反了? [推广有奖]

  • 1关注
  • 17粉丝

已卖:450份资源

讲师

39%

还不是VIP/贵宾

-

威望
0
论坛币
8353 个
通用积分
123.4235
学术水平
64 点
热心指数
65 点
信用等级
59 点
经验
25329 点
帖子
151
精华
1
在线时间
671 小时
注册时间
2014-12-4
最后登录
2024-8-21

楼主
丘延君 发表于 2017-4-7 11:50:09 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
character or Factor.rar (933 Bytes) 本附件包括:
  • character or Factor.R
    作为一个半菜鸟,我深刻体会到刚开始接触R的时候经常会遇到一些让自己措手不及的小问题,字符串数据的“造反”便是其一
    于是,决定写这篇帖子和各位新手们分享。共同进步,少走弯路。
    当然,我自己也收集了一些其他的小问题的处理方法,以后有机会再写。
  1. ###### R语言新手解惑之:为什么我的字符串造反了?  #####
  2. #### 先生成一个字符串向量 ####
  3. rep<-paste("rep",1:100,sep="")#生成字符串rep1,...,rep100
  4. rep<-sample(rep,100,replace = FALSE)#随机调整顺序
  5. rep[1:6]
  6. other<-round(runif(100,6,10))#生成均匀分布随机数并四舍五入取整
  7. other[1:6]
  8. is(rep)#查看数据类型,是"character" 、"vector"
  9. is(other)##查看数据类型,是"numeric" 、"vector"
  10. #### 接下来将上述两列数据合并成数据框,并查看stringAsFactor参数带来的影响 ####

  11. #### 1:data.frame(rep,other,stringAsFactor=TRUE) ####
  12. #stringASFactor=TRUE 为默认设置 #

  13. data<-data.frame(rep,other,stringsAsFactors = TRUE)
  14. head(data)
  15. class(data$rep)#显然此时data$rep已经转换成因子了,而不是字符串了

  16. data1<-data.frame(rep,other)#等价于data.frame(rep,other,stringsAsFactors = TRUE)
  17. head(data1)
  18. class(data1$rep)#显然此时data1$rep已经转换成因子了,而不是字符串了

  19. #### 2:data.frame(rep,other,stringAsFactor=FALSE) ####
  20. dataF<-data.frame(rep,other,stringsAsFactors = FALSE)
  21. head(dataF)
  22. class(dataF$rep)#此时dataF$rep是字符串,正是我们想要保留的数据类型

  23. #### 3:R中内置的一些数据读取的函数都设置有stringASFactor=TRUE 这个默认参数 ####
  24. ?read.table
  25. ?read.csv
  26. ?read.delim
  27. ?data.frame
  28. #### 小结:因此我们在利用上述函数(上面展示的仅仅是部分)输入数据时,
  29. ####要留意自己是否要保留字符串向量的格式,还是要转换成因子去处理,
  30. #### 这些函数默认将字符串处理成因子
复制代码
  1. > rep<-paste("rep",1:100,sep="")#生成字符串rep1,...,rep100
  2. > rep<-sample(rep,100,replace = FALSE)#随机调整顺序
  3. > rep[1:6]
  4. [1] "rep22" "rep30" "rep17" "rep96" "rep55" "rep84"
  5. > other<-round(runif(100,6,10))#生成均匀分布随机数并四舍五入取整
  6. > other[1:6]
  7. [1]  7  7 10 10  6  7
  8. > is(rep)#查看数据类型,是"character" 、"vector"
  9. [1] "character"           "vector"              "data.frameRowLabels"
  10. [4] "SuperClassMethod"   
  11. > is(other)##查看数据类型,是"numeric" 、"vector"
  12. [1] "numeric" "vector"
  13. > data<-data.frame(rep,other,stringsAsFactors = TRUE)
  14. > head(data)
  15.     rep other
  16. 1 rep22     7
  17. 2 rep30     7
  18. 3 rep17    10
  19. 4 rep96    10
  20. 5 rep55     6
  21. 6 rep84     7
  22. > class(data$rep)#显然此时data$rep已经转换成因子了,而不是字符串了
  23. [1] "factor"
  24. > data1<-data.frame(rep,other)#等价于data.frame(rep,other,stringsAsFactors = TRUE)
  25. > class(data1$rep)#显然此时data1$rep已经转换成因子了,而不是字符串了
  26. [1] "factor"
  27. > dataF<-data.frame(rep,other,stringsAsFactors = FALSE)
  28. > head(dataF)
  29.     rep other
  30. 1 rep22     7
  31. 2 rep30     7
  32. 3 rep17    10
  33. 4 rep96    10
  34. 5 rep55     6
  35. 6 rep84     7
  36. > class(dataF$rep)#此时dataF$rep是字符串,正是我们想要保留的数据类型
  37. [1] "character"
  38. > ?read.table
  39. > ?read.csv
  40. > ?read.delim
  41. > ?data.frame
复制代码



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 字符串 Character factor Facto R语言

沙发
木提 发表于 2017-4-7 15:04:14
谢谢楼主的分享

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 22:25