微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改因子级别并重新排列数据框

如何解决更改因子级别并重新排列数据框

这是一个使用 dput 的示例数据框:

 df <-
      structure(
        list(layer = structure(
          1:5,.Label = c(
            'CEOS and managers','Clerks and services','Production','Professionals','Technicians'
          ),class = 'factor'
        )),row.names = c(NA,-5L),class = c('tbl_df','tbl','data.frame')
      )

我想使用 forcats 重新排列我的因子顺序,以便根据以下顺序对数据框进行重新排序,以便条形图也可以这样显示

df %>%
  mutate(
    layer = forcats::fct_relevel(
      'CEOs and managers','Technicians','Production')
  ) %>%
  arrange(layer)

但这留下了以下内容

# A tibble: 5 x 1
  layer            
  <fct>            
1 CEOs and managers
2 CEOs and managers
3 CEOs and managers
4 CEOs and managers
5 CEOs and managers
  

抱歉,我总是对 fct_relevelfct_recode

感到困惑

解决方法

这个错误很容易犯。您必须将列向量提供给 fct_relevel。像这样:


library(dplyr,warn.conflicts = F)
library(forcats)

df <-
  structure(
    list(layer = structure(
      1:5,.Label = c(
        'CEOS and managers','Clerks and services','Production','Professionals','Technicians'
      ),class = 'factor'
    )),row.names = c(NA,-5L),class = c('tbl_df','tbl','data.frame')
  )

df %>%
  mutate(layer = forcats::fct_relevel(
    layer,c(
      'CEOS and managers','Technicians','Production'))) %>% 
  arrange(layer)
#> # A tibble: 5 x 1
#>   layer              
#>   <fct>              
#> 1 CEOS and managers  
#> 2 Professionals      
#> 3 Technicians        
#> 4 Clerks and services
#> 5 Production

reprex package (v0.3.0) 于 2021 年 1 月 11 日创建

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。