美文网首页R小技巧R数据分析workshop
R数据分析之 因子处理 forcats包介绍

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

作者: 天地本无心 | 来源:发表于2020-08-28 20:43 被阅读0次

    接触到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
      <int> <fct>         <int> <fct> <fct>          <fct>              <fct>              <fct>              <int>
    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
      <fct>         <int>
    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, 按照数值大小排列
    参考链接

    相关文章

      网友评论

        本文标题:R数据分析之 因子处理 forcats包介绍

        本文链接:https://www.haomeiwen.com/subject/mbglsktx.html