美文网首页R数据分析workshopR语言绘图
R数据分析 利用dplyr包将已有的数值列转换为百分数列

R数据分析 利用dplyr包将已有的数值列转换为百分数列

作者: 天地本无心 | 来源:发表于2021-03-02 18:56 被阅读0次

    数据分析中, 我们有时候会有这样的需求, 比如将已有的数值列,转化为百分位列。

    Case study1:

    比如说我们有如下表格,代表了ATGC四种碱基的绝对个数。

    Base    Num
    A       1000
    T       2000
    G       4000
    C       5000
    

    我们现在想增加一列,代表各种碱基的百分比,然后用这个百分比去画饼图, 期待的结果如下。

    Base    Num     Percentage
    A       1000    8.3%
    T       2000    16.7%
    G       4000    33.3%
    C       5000    41.7%
    

    我们应该怎么操作呢?利用dplyr里面的mutate函数即可。

    require(tidyverse)
    df <- read.table("~/ATGC.txt", header = T)
    df %>%
      mutate(Percentage=paste0(round(Num/sum(Num)*100,2),"%"))
    

    Case study2:

    当遇到分组变量,想分别计算不同的分组条件下,不同的变量的百分比,该怎么做呢?

    我们先构造一个数据集:

    gender <- rep(c("male","female"), each=3)
    weight <- c(sample(120:180,3),sample(80:100,3))
    df2 <- data.frame(gender, weight)
    

    构造的数据集df2内容如下:

    > df2
      gender weight
    1   male    168
    2   male    125
    3   male    133
    4 female     99
    5 female     88
    6 female     80
    

    我们通过group_by()函数进行分组操作:

    df2 %>% 
      group_by(gender) %>%
      mutate(Percentage=paste0(round(weight/sum(weight)*100,2),"%"))
    

    最终的结果如下:

    # A tibble: 6 x 3
    # Groups:   gender [2]
      gender weight Percentage
      <fct>   <int> <chr>     
    1 male      168 39.44%    
    2 male      125 29.34%    
    3 male      133 31.22%    
    4 female     99 37.08%    
    5 female     88 32.96%    
    6 female     80 29.96%
    

    Done!


    相关文章

      网友评论

        本文标题:R数据分析 利用dplyr包将已有的数值列转换为百分数列

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