group by 条件_tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)

57de7d591c9be25cff12291998c16fcc.png
tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)​mp.weixin.qq.com
6d90239caf2c4a0ed405232d72f12bbd.png

使用tidyverse进行简单的数据处理:

盘一盘Tidyverse| 筛行选列之select,玩转列操作​mp.weixin.qq.com
f0aae20dbd046e4f3f8d2df2c31c8737.png
盘一盘Tidyverse| 只要你要只要我有-filter 筛选行​mp.weixin.qq.com
489a6b9191c8413f35afee3ad7ac4e81.png
Tidyverse|数据列的分分合合,一分多,多合一​mp.weixin.qq.com
6d90239caf2c4a0ed405232d72f12bbd.png
Tidyverse| XX_join :多个数据表(文件)之间的各种连接​mp.weixin.qq.com
74aa276639e84cfd29c8eb080728c184.png

本次介绍变量汇总以及分组汇总

一 summarize汇总

汇总函数 summarise(),可以将数据框折叠成一行 ,多与group_by()结合使用

1.1 summarise完成指定变量的汇总

统计均值,标准差,最小值,个数和逻辑值

library(dplyr)
iris %>%
   summarise(mean(Petal.Length), #无命名
     sd_pet_len = sd(Petal.Length,na.rm = TRUE), #命名
             min_pet_len = min(Petal.Length),
             n = n(),
            any(Sepal.Length > 5))

# mean(Petal.Length) sd_pet_len min_pet_len   n any(Sepal.Length > 5)
#1             3.758   1.765298           1 150                 TRUE

常用函数:

  • Center 位置度量 : mean(), median()
  • Spread 分散程度度量 : sd(), IQR(), mad()
  • Range 秩的度量 : min(), max(), quantile()
  • Position 定位度量 : first(), last(), nth(),
  • Count 计数 : n(), n_distinct()
  • Logical 逻辑值的计数和比例 : any(), all()

1.2 , summarise_if完成一类变量的汇总

iris %>%
    summarise_if(is.numeric, ~ mean(., na.rm = TRUE))

# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1     5.843333   3.057333       3.758   1.199333

1.3,summarise_at完成指定变量的汇总

summarise_at配合vars,可以更灵活的筛选符合条件的列,然后进行汇总

iris %>%
    summarise_at(vars(ends_with("Length"),Petal.Width),
    list(~mean(.), ~median(.)))

# Sepal.Length_mean Petal.Length_mean Petal.Width_mean Sepal.Length_median Petal.Length_median
#1         5.843333             3.758         1.199333                 5.8               4.35
# Petal.Width_median
#1               1.3

二 group_by 分组汇总

group_by() summarise() 的组合构成了使用 dplyr 包时最常用的操作之一:分组摘要

2.1 按照Species分组,变量汇总

iris %>%
    group_by(Species) %>%
     summarise(avg_pet_len = mean(Petal.Length),
      sd_pet_len = sd(Petal.Length),
             min_pet_len = min(Petal.Length),
             first_pet_len = first(Petal.Length),
            n_pet_len = n())

# A tibble: 3 x 6
# Species   avg_pet_len sd_pet_len min_pet_len first_pet_len n_pet_len
# <fct>           <dbl>     <dbl>       <dbl>         <dbl>     <int>
#1 setosa           1.46     0.174         1             1.4       50
#2 versicolor       4.26     0.470         3             4.7       50
#3 virginica         5.55     0.552         4.5           6         50

2.2 计数

  • n() :无需参数返回当前分组的大小;
  • sum(!is.na(x)) :返回非缺失值的梳理;
  • n_distinct(x):返回 唯一值的数量。
iris %>%
group_by(Species) %>%
   summarise( n_pet_len = n(),
             noNA_n_pet_len =  sum(!is.na(Petal.Length)),
         Petal.Length_uniq_n = n_distinct(Petal.Length)
    )
# A tibble: 3 x 4
# Species   n_pet_len noNA_n_pet_len Petal.Length_uniq_n
# <fct>         <int>         <int>               <int>
#1 setosa           50             50                   9
#2 versicolor       50             50                 19
#3 virginica         50             50                 20

除此之外,还可以用dplyr的count函数进行计数:

iris %>%
count(Species)

# A tibble: 3 x 2
# Species       n
# <fct>     <int>
#1 setosa       50
#2 versicolor   50
#3 virginica     50

2.3 逻辑值的计数和比例

当与数值型函数一同使用时, TRUE 会转换为 1, FALSE 会转换为 0。

这使得 sum() 和 mean() 非常适用于逻辑值:sum(x) 可以找出 x 中 TRUE 的数量, mean(x) 则可以找出比例 .

iris %>%
group_by(Species) %>%
   summarise( n_pet_len = n(),
             noNA_n_pet_len =  sum(!is.na(Petal.Length)),
         Petal.Length_uniq_n = n_distinct(Petal.Length),
             Petal.Length_uniq_n2 = sum(n_distinct(Petal.Length) >= 20)
    )

# A tibble: 3 x 5
# Species   n_pet_len noNA_n_pet_len Petal.Length_uniq_n Petal.Length_uniq_n2
# <fct>         <int>         <int>               <int>               <int>
#1 setosa           50             50                   9                   0
#2 versicolor       50             50                 19                   0
#3 virginica         50             50                 20                   1

参考资料:

https://r4ds.had.co.nz/

书籍:《R数据科学》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值