美文网首页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