修改因子水平

2020-06-22 17:22:52 浏览数 (3)

将factor的因子水平进行修改比较方便的包为forcats 测试数据集:forcats::gss_cat 数据集,该数据集是综合社会调查数据的一份抽样。

代码语言:javascript复制
library(tidyverse)
library(forcats)
gss_cat

gss_cat数据集是由一个 R 包提供的,因为当因子保存在 tibble 中时,其水平不是很容易看到的。查看因子水平的一种方法是使用 count() 函数来直接计算数量。可以看到race有三个level。

代码语言:javascript复制
      gss_cat %>%
        count(race)
      #> # A tibble: 3 × 2
      #>     race     n
      #>   <fctr> <int>
      #> 1  Other  1959
      #> 2  Black  3129
      #> 3  White 16395

下面将两个level进行合并修改: 修改水平最常用、最强大的工具是 fct_recode()函数,它可以对每个水平进行修改或重新编码。例如, 我们看一下race

代码语言:javascript复制
gss_cat %>% mutate(race = fct_recode(race,"Black and White" = "Black" ,"Black and White" = "White"))%>% count(race)

#>Other 1959            
#>Black and White   19524   

或者可以使用fct_collapse(),想要合并多个水平,那么可 fct_recode()函数的变体 fct_collapse() 函数更方便。对于每 个新水平,你都可以提供一个包含原水平的向量:

代码语言:javascript复制
gss_cat %>% mutate(race = fct_collapse(race,"Black and White" = c("Black" ,"White"))) %>% count(race)

#>Other 1959            
#>Black and White   19524   

0 人点赞