R数据分析之 因子处理 forcats包介绍

接触到R数据类型的人都知道,因子是一种重要的数据类型,主要用于数据分组,即在分类变量出现时,这时候一般都以因子形式保存。

在基础函数中,关于factor变量的主要函数有:

  • factor() 创建因子变量
  • levels() 提取因子变量levels

例如如下操作

>  rm(list=ls())
> gender_code <- c(1,0,0,1,1,1,0)
> gender <- factor(gender_code, levels = c(1,0), labels = c( "男","女"))
> gender
[1] 男 女 女 男 男 男 女
Levels: 男 女
> levels(gender)
[1] "男" "女"

下面主要针对fct_reorder()函数的介绍,顺便介绍一下forcats包的使用。目前,forcats包已经被tidyverse包集成了,当我们加载tidyverse包的时候,就可以看到里面集成了forcats包。我们使用的数据集是forcats自带的数据集gss_cat

library(tidyverse)
> library(tidyverse)
── Attaching packages ──────────────────────────── tidyverse 1.3.0 ──
✓ ggplot2 3.3.0     ✓ purrr   0.3.4
✓ tibble  3.0.3     ✓ dplyr   0.8.5
✓ tidyr   1.1.0     ✓ stringr 1.4.0
✓ readr   1.3.1     ✓ forcats 0.5.0
── Conflicts ─────────────────────────────── tidyverse_conflicts() ──
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()

我们先看一下gss_cat数据的概况:

> head(gss_cat)
# A tibble: 6 x 9
   year marital         age race  rincome        partyid            relig              denom            tvhours
                                                                  
1  2000 Never married    26 White $8000 to 9999  Ind,near rep       Protestant         Southern baptist      12
2  2000 Divorced         48 White $8000 to 9999  Not str republican Protestant         Baptist-dk which      NA
3  2000 Widowed          67 White Not applicable Independent        Protestant         No denomination        2
4  2000 Never married    39 White Not applicable Ind,near rep       Orthodox-christian Not applicable         4
5  2000 Divorced         25 White Not applicable Not str democrat   None               Not applicable         1
6  2000 Married          25 White $20000 - 24999 Strong democrat    Protestant         Southern baptist      NA

我们可以看到第二列marital(婚姻状况是一个category virable,分类变量),现在我们想统计一下每种婚姻类型的总数。

> gss_cat %>%  
+   count(marital)
# A tibble: 6 x 2
  marital           n
           
1 No answer        17
2 Never married  5416
3 Separated       743
4 Divorced       3383
5 Widowed        1807
6 Married       10117

现在我们想通过bar chart来展示每种婚姻状况类型的多少。

library(ggplot2)
gss_cat %>%  
  count(marital) %>% 
  ggplot(aes(marital, n)) + 
  geom_col()
每种婚姻类型的bar chart

如果我们想要得到按照柱长按从小到大排列的barchart, 我们就要对因子进行排序,这时候就要用fct_reorder()函数了。

library(ggplot2)
gss_cat %>%  
  count(marital) %>% 
  mutate(marital=fct_reorder(marital,n)) %>%
  ggplot(aes(marital, n)) + 
  geom_col()
每种婚姻类型的bar chart, 按照数值大小排列
参考链接
  • 关于factor的介绍
  • 关于forcats包的介绍

你可能感兴趣的:(R数据分析之 因子处理 forcats包介绍)