作者:宋星云 中国科学院心理研究所硕士,R语言爱好者。已有多年数据分析与R语言的实战经验,毕业后将从事数据分析工作。

个人公众号:星云实验室


类别变量(nominal variable),又称名义变量、称名变量、分类变量,是一种常用的定性变量,用于表示类别。本身没有等级顺序之分,不可比较大小,不可加减乘除。例如性别、民族、肤色、学号等等。

在R中,通常使用factor类型的变量存储类别变量,有时即便你直接使用了string类型,但是在数据分析中,R依旧会将string变量转化为factor变量进行分析。通常,我们可以直接用factor函数进行变量类型的转化:

item <- factor(item)

但是,factor类型的变量默认是按照字符串的顺序排列的,在数据可视化、回归分析中,排列顺序均会有一定的影响。有时会很麻烦。

举个例子:下表是一次考试中4题的平均分(数据为自编)

现在我们要绘制4题的柱状图,如果直接绘制,那么会是这样的情况:

在横轴上,item会按照字符串顺序排列,而不是按照我们给出的T1,T2,T3,T11的顺序排列。

那么该怎么办呢?

levels函数能够显示factor变量的顺序,labels函数则显示我们看到的那部分内容。我们直接对factor变量的label属性进行设置,就可以达到自定义顺序的效果:

item<-c("T1","T2","T3","T11")

factor(item)

# > [1]  T1 T2 T3 T11

# > Levels: T1 T11 T2 T3

### 可以使用此方案为factor后的变量加自定义的顺序

ordered.item <- factor(1:length(item), labels = item)

ordered.item

# > [1]  T1 T2 T3 T11

# > Levels: T1 T2 T3 T11

有时,在数据框(data.frame)内,排列的顺序也比较复杂,例如下表,我们依旧想要按照 T1 T2 T3 T11 的顺序来画图,此时不能直接按照上述方法操作。

解决方案依旧不复杂:

### 首先写入自定义顺序

ordered.item <- c("T1","T2","T3","T11")

ordered.item <- factor(1:length(ordered.item),labels = ordered.item)

### 然后对数据框df中的item字段进行自定义顺序排列

df$item<-factor(df$item,levels = levels(ordered.item))

levels(df$item)

# > [1] T1 T2 T3 T11

这样,在后续的分析中,df的item字段就会是按照 T1 T2 T3 T11 的顺序来排列了。

往期精彩:

  • 【R文本分析】《工作细胞》是一部成功的科普番嘛?

  • 【R可视化】你家乡的肯德基都在哪儿?

公众号后台回复关键字即可学习

回复 爬虫             爬虫三大案例实战  
回复 Python        1小时破冰入门

回复 数据挖掘      R语言入门及数据挖掘
回复 人工智能      三个月入门人工智能
回复 数据分析师   数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

我怎么这么好看

【R语言实用技巧】类别变量的顺序自定义设置相关推荐

  1. R语言编程 第一讲 变量与赋值

    R语言编程 第一讲 变量与赋值 R语言的变量名 赋值符号 <- 与 = 的区别 赋值符号 <- 的更多细节 Copy-on-Modify与Modify-in-Place 函数调用 列表 数 ...

  2. R语言ggplot2可视化分组变量下的数据分布(线条、色彩配置)、WVPlots包的ShadowHist函数比较分组下的数据直方图、ggplot2分面图facet_wrap可视化分组变量下的数据分布

    R语言ggplot2可视化分组变量下的数据分布(线条.色彩配置).WVPlots包的ShadowHist函数比较分组下的数据直方图.ggplot2分面图facet_wrap可视化分组变量下的数据分布 ...

  3. R语言ggplot2可视化:使用scale_y_continous函数自定义指定Y轴的坐标范围以及对应的数值、将坐标轴的数值设置为需要的数据类型(整型、浮点型)

    R语言ggplot2可视化:使用scale_y_continous函数自定义指定Y轴的坐标范围以及对应的数值.将坐标轴的数值设置为需要的数据类型(整型.浮点型) 目录

  4. R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系

    R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格.可视化核心参数与评估指标关系.Accuracy与树的深度.个数的关系.Kappa与树的深度.个数的关系 目录 R语言使用caret ...

  5. R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格

    R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格 目录 R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格

  6. R语言row.names函数为dataframe、matrix设置行名称实战

    R语言row.names函数为dataframe.matrix设置行名称实战 目录 R语言row.names函数为dataframe.matrix设置行名称实战 #仿真数据

  7. R语言使用skimr包的skim_with函数自定义指定需要查看的统计信息、统计口径、查看dataframe特定数据列的summary信息、统计汇总信息(Specify statistics)

    R语言使用skimr包的skim_with函数自定义指定需要查看的统计信息.统计口径.查看dataframe特定数据列的summary信息.统计汇总信息(Specify your own statis ...

  8. matlab画簇状堆积柱状图怎么调颜色,簇状柱形图实用技巧——“超额”的完美展示与设置!...

    原标题:簇状柱形图实用技巧--"超额"的完美展示与设置! 簇状柱形图,也是Excel图表中常见的图表,但是如何有效的使用簇状柱形图,或者利用簇状柱形图形象直观的显示数据,一直是很多 ...

  9. R语言使用log函数计算对数、自定义指定底数

    R语言使用log函数计算对数.自定义指定底数 目录 R语言使用log函数计算对数.自定义指定底数 R语言是解决什么问题的? R语言使用log函数计算对数.自定义指定底数 安利一个R语言的优秀博主及其C ...

  10. R语言使用rnorm函数生成正态分布随机数、自定义指定生成随机数的个数、均值、方差

    R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 目录 R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 R 语言特点 R语言使用r ...

最新文章

  1. linux下安装sz/rz命令
  2. 把Cloud for Customer的attachment视图直接放到工作中心视图去
  3. std::recursive_mutex嵌套锁/递归锁
  4. http --- 路由器缓存与常见的状态码
  5. java程序 输入10个数字并求和
  6. 巧用css的border属性完成对图片编辑功能的性能优化
  7. 第八十二期:掌握这些监控报警优化技巧,百万年薪不在话下!
  8. python图形界面库哪个好_8个必备的Python GUI库
  9. 总结协查上海银行绑卡失败原因的处理过程
  10. 使用万能框架HttpHelper抓取安卓APP数据
  11. break语句python_Python break 语句
  12. Lua 可变参数之arg与select
  13. logit回归模型的参数估计过程_LOGISTIC模型参数估计及预测实例.pdf
  14. AD7705/TM7705使用注意事项
  15. 使用Excel处理姓名数据,转为拼音并且姓与名首字母大写
  16. 开发者必看:Google Play应用上架流程(希望你不踩坑!)
  17. vue路由变化时使用axios取消所有请求
  18. 统计学-【假设检验】 知识点总结
  19. Bugzilla使用
  20. 康托尔点集matlab实数,为什么康托尔集内的数和实数个数一样多

热门文章

  1. 面试必备!Kafka 怎么顺序消费?
  2. 再见Activity!SpringBoot+flowable完美结合,快速实现工作流,so easy!
  3. 国内开源落后?那是不是要做点什么。
  4. 开发者的盛宴Google I/O 2016
  5. shell基础之bus实战(if 练习)
  6. js数组中判断是否有重复项
  7. webService(一)开篇
  8. 早该知道的 7 个JavaScript 技巧[转]
  9. JS计算GridView里的TextBox
  10. 供参考的 php 学习路线