【问题标题】:Change factor levels and rearrange dataframe更改因子水平并重新排列数据框
【发布时间】:2021-04-16 19:04:50
【问题描述】:

这是一个使用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',
      'Professionals',
      'Technicians',
      'Clerks and services',
      '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 很困惑

【问题讨论】:

    标签: r r-factor forcats


    【解决方案1】:

    这个错误很容易犯。您必须将列向量提供给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',
          'Professionals',
          'Technicians',
          'Clerks and services',
          '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 创建于 2021-01-11 (v0.3.0)

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多