将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
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() 函数更方便。对于每 个新水平,你都可以提供一个包含原水平的向量:
gss_cat %>% mutate(race = fct_collapse(race,"Black and White" = c("Black" ,"White"))) %>% count(race)
#>Other 1959
#>Black and White 19524