【R语言实用技巧】类别变量的顺序自定义设置
作者:宋星云 中国科学院心理研究所硕士,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语言实用技巧】类别变量的顺序自定义设置相关推荐
- R语言编程 第一讲 变量与赋值
R语言编程 第一讲 变量与赋值 R语言的变量名 赋值符号 <- 与 = 的区别 赋值符号 <- 的更多细节 Copy-on-Modify与Modify-in-Place 函数调用 列表 数 ...
- R语言ggplot2可视化分组变量下的数据分布(线条、色彩配置)、WVPlots包的ShadowHist函数比较分组下的数据直方图、ggplot2分面图facet_wrap可视化分组变量下的数据分布
R语言ggplot2可视化分组变量下的数据分布(线条.色彩配置).WVPlots包的ShadowHist函数比较分组下的数据直方图.ggplot2分面图facet_wrap可视化分组变量下的数据分布 ...
- R语言ggplot2可视化:使用scale_y_continous函数自定义指定Y轴的坐标范围以及对应的数值、将坐标轴的数值设置为需要的数据类型(整型、浮点型)
R语言ggplot2可视化:使用scale_y_continous函数自定义指定Y轴的坐标范围以及对应的数值.将坐标轴的数值设置为需要的数据类型(整型.浮点型) 目录
- R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格、可视化核心参数与评估指标关系、Accuracy与树的深度、个数的关系、Kappa与树的深度、个数的关系
R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格.可视化核心参数与评估指标关系.Accuracy与树的深度.个数的关系.Kappa与树的深度.个数的关系 目录 R语言使用caret ...
- R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格
R语言使用caret包对GBM模型自定义参数调优:自定义参数优化网格 目录 R语言使用caret包对GBM模型自定义参数调优:自定义优化参数网格
- R语言row.names函数为dataframe、matrix设置行名称实战
R语言row.names函数为dataframe.matrix设置行名称实战 目录 R语言row.names函数为dataframe.matrix设置行名称实战 #仿真数据
- R语言使用skimr包的skim_with函数自定义指定需要查看的统计信息、统计口径、查看dataframe特定数据列的summary信息、统计汇总信息(Specify statistics)
R语言使用skimr包的skim_with函数自定义指定需要查看的统计信息.统计口径.查看dataframe特定数据列的summary信息.统计汇总信息(Specify your own statis ...
- matlab画簇状堆积柱状图怎么调颜色,簇状柱形图实用技巧——“超额”的完美展示与设置!...
原标题:簇状柱形图实用技巧--"超额"的完美展示与设置! 簇状柱形图,也是Excel图表中常见的图表,但是如何有效的使用簇状柱形图,或者利用簇状柱形图形象直观的显示数据,一直是很多 ...
- R语言使用log函数计算对数、自定义指定底数
R语言使用log函数计算对数.自定义指定底数 目录 R语言使用log函数计算对数.自定义指定底数 R语言是解决什么问题的? R语言使用log函数计算对数.自定义指定底数 安利一个R语言的优秀博主及其C ...
- R语言使用rnorm函数生成正态分布随机数、自定义指定生成随机数的个数、均值、方差
R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 目录 R语言使用rnorm函数生成正态分布随机数.自定义指定生成随机数的个数.均值.方差 R 语言特点 R语言使用r ...
最新文章
- linux下安装sz/rz命令
- 把Cloud for Customer的attachment视图直接放到工作中心视图去
- std::recursive_mutex嵌套锁/递归锁
- http --- 路由器缓存与常见的状态码
- java程序 输入10个数字并求和
- 巧用css的border属性完成对图片编辑功能的性能优化
- 第八十二期:掌握这些监控报警优化技巧,百万年薪不在话下!
- python图形界面库哪个好_8个必备的Python GUI库
- 总结协查上海银行绑卡失败原因的处理过程
- 使用万能框架HttpHelper抓取安卓APP数据
- break语句python_Python break 语句
- Lua 可变参数之arg与select
- logit回归模型的参数估计过程_LOGISTIC模型参数估计及预测实例.pdf
- AD7705/TM7705使用注意事项
- 使用Excel处理姓名数据,转为拼音并且姓与名首字母大写
- 开发者必看:Google Play应用上架流程(希望你不踩坑!)
- vue路由变化时使用axios取消所有请求
- 统计学-【假设检验】 知识点总结
- Bugzilla使用
- 康托尔点集matlab实数,为什么康托尔集内的数和实数个数一样多