首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将因子级别更改为列的自定义顺序

将因子级别更改为列的自定义顺序
EN

Stack Overflow用户
提问于 2017-12-24 16:23:43
回答 2查看 5K关注 0票数 3

我有如下所示的数据框架

代码语言:javascript
复制
> data = data.frame(name = c('Mike', 'Tony', 'Carol', 'Tim', 'Joe'), veh = c('car', 'bike', 'car', 'car', 'cycle') )
> data
   name   veh
1  Mike   car
2  Tony  bike
3 Carol   car
4   Tim   car
5   Joe cycle
> str(data$name)
 Factor w/ 5 levels "Carol","Joe",..: 3 5 1 4 2
> str(data$veh)
 Factor w/ 3 levels "bike","car","cycle": 2 1 2 2 3
> levels(data$veh)
[1] "bike"  "car"   "cycle"

默认情况下,该因子水平设置为自行车1,汽车2,自行车3。我需要改变因素水平为1辆车,2辆自行车和3辆自行车-我怎么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-24 17:39:43

tidyverse/forcats解决方案没有什么问题,但基本-R解决方案是使用factor()和按所需顺序指定的levels参数:

代码语言:javascript
复制
data$veh <- factor(data$veh, levels=c("car","cycle","bike"))

与通常的观点相反,在这种情况下,ordered=TRUE通常是不必要的(即使普通因素也有排序),除非您特别希望将焦点变量视为序数变量(在这种情况下,R将使用正交多项式对比,而不是处理对比,默认情况下),或者希望能够对变量(例如veh > "car")使用比较运算符;如果您不确定,默认(普通)因素可能很好。

票数 6
EN

Stack Overflow用户

发布于 2017-12-24 16:28:27

我们可以使用fct_relevel

代码语言:javascript
复制
library(forcats)
data$veh <- fct_relevel(data$veh, c('car', 'cycle', 'bike'))
str(data$veh)
#Factor w/ 3 levels "car","cycle",..: 1 3 1 1 2
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47962255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档