tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)

简介: tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/tQt0ezYJj3H7x3aWZmKVEQ


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

盘一盘Tidyverse| 筛行选列之select,玩转列操作

盘一盘Tidyverse| 只要你要只要我有-filter 筛选行

Tidyverse|数据列的分分合合,一分多,多合一

Tidyverse| XX_join :多个数据表(文件)之间的各种连接

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


一 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
相关文章
|
2月前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(分组分析)
ChatGPT在常用的数据分析方法中的应用(分组分析)
64 1
|
6月前
|
SQL 分布式计算 DataWorks
DataWorks操作报错合集之在运行数据分析任务时,底层依赖服务alisa.olap.submitjob出现了异常,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
数据挖掘 Python
【Python数据分析】用Python操作Excel,xlsxwriter的使用介绍
【Python数据分析】用Python操作Excel,xlsxwriter的使用介绍
|
存储 并行计算 数据挖掘
【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能
【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能
115 2
|
SQL 数据挖掘 关系型数据库
pandas数据分析之分组聚合
在数据分析过程中,经常会需要根据某一列或多列把数据划分为不同的组别,然后再对其进行数据分析。本文将介绍pandas的数据分组及分组后的应用如对数据进行聚合、转换和过滤。
162 0
|
数据挖掘 索引 Python
【100天精通Python】Day60:Python 数据分析_Pandas高级功能-数据透视表pivot_table()和数据交叉表crosstab()常用功能和操作
【100天精通Python】Day60:Python 数据分析_Pandas高级功能-数据透视表pivot_table()和数据交叉表crosstab()常用功能和操作
229 0
|
数据挖掘 索引 Python
【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析
【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析
140 0
|
SQL 数据挖掘 数据库
【100天精通Python】Day54:Python 数据分析_Pandas入门基础,核心数据结构Serise、DataFrame、Index对象,数据的导入操作
【100天精通Python】Day54:Python 数据分析_Pandas入门基础,核心数据结构Serise、DataFrame、Index对象,数据的导入导出操作
208 0
|
人工智能 数据挖掘 Linux
ChatGPT × R语言 丨实际数据分析过程中,AI能够带来哪些改变?数据框操作案例分享
ChatGPT × R语言 丨实际数据分析过程中,AI能够带来哪些改变?数据框操作案例分享
|
数据挖掘 API
淘宝商品数据分析怎么操作?从哪些方面下手?
淘宝商品数据分析怎么操作?从哪些方面下手?