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

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

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

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

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

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

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

一 summarise 汇总

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

1.1 summarize完成指定变量的汇总

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

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() 和 summarize() 的组合构成了使用 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数据科学》

【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】

tidyverse|数据分析常规操作-分组汇总(sumamrise+group_by)的更多相关文章

  1. MongoDB分组汇总操作,及Spring data mongo的实现

    转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...

  2. 8第八章CTE递归及分组汇总高级部分(多维数据集)(转载)

    8第八章CTE递归及分组汇总高级部分(多维数据集) 这里贴图太麻烦...算了 UNION 等集合操作符: UNION 等以第一个 SELECT  的 列明 作为 整个结果集的列明,整个结果集 唯一认可 ...

  3. R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:情感分析中对文本处理的数据的小技巧要 ...

  4. Learn Docker(一)—软件安装与常规操作

    一.安装Docker Windows平台 在Windows10 X64专业版上可以直接下载Docker原生应用进行安装,在控制面板的程序与功能里启用Hyper-v,之后就可以运行docker程序啦. ...

  5. 数组(Array)的常规操作2

    数组的常规操作2 常用属性 length属性:数组的长度: prototype:原型 常用数组(Array)操作方法 form 在一个类数组中创建一个新的数组实列 isArry is就是判断是否为Ar ...

  6. gridpanel分组汇总

    [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总 2015-05-31     86 本文地址:http://blog.csdn.net/sushengmi ...

  7. FTP服务器常规操作

    导读 FTP协议是Internet文件传输的基础,它是由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.下面就由我给大家简单介绍一下 ...

  8. Apache服务器常规操作

    导读 Apache是世界上排名第一的Web服务器,50%以上的Web服务器都在使用Apache,它几乎可以在所有计算机平台上运行.下面就由我给大家说说Apache服务器的一些常规操作. Apache服 ...

  9. PHP网络操作函数汇总

    PHP网络操作函数汇总 投稿:junjie 字体:[增加 减小] 类型:转载   这篇文章主要介绍了PHP网络操作函数汇总,本文列举了如gethostbyaddr.gethostbyname.head ...

随机推荐

  1. 温故知新-Mysql索引结构&页&聚集索引&非聚集索

    文章目录 摘要 索引 索引概述 索引优势劣势 索引结构 BTREE 结构 B+TREE 结构 页 索引分类 索引语法 索引设计原则 聚触索引 & 非聚触索引 你的鼓励也是我创作的动力 Post ...

  2. Centos7快速安装RocketMQ

    1. 为什么要用MQ 消息队列是一种"先进先出"的数据结构 其应用场景主要包含以下3个方面 应用解耦 系统的耦合性越高,容错性就越低.以电商应用为例,用户创建订单后,如果耦合调用库 ...

  3. 关于vue不能像angular深度克隆数据解决办法

    vue要让数据源实现响应式前提必须要在初始化的时候有这个属性 如果没有这个属性,也可实现数据实时响应.解决方法: this.数组/对象.spice(0,1,'属性值') Vue.set(要修改的数组或 ...

  4. MyBatis运行流程及入门第一个程序

    1. mybatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并 ...

  5. el-table的花样需求---表格加图片、加音频、加序号、多级动态表头

    elemnet-ui组件库大家应该不陌生,在展示多条结构类似的数据方面,el-table可谓扛把子,不仅可以把数据展示的整齐,还支持排序.筛选或其他自定义操作.那么,除了上述的基本功能外,你还遇到过哪 ...

  6. EIGRP-15-其他和高级的EIGRP特性-1-路由器ID

    与很多协议一样, EIGRP也使用了路由器ID (RTD)的概念,用一个4字节的编号来标识某个路由器实例.每个地址家族实例拥有自已独立的RID.工程师可以在一台路由器上,为多个EIGRP进程和地址家族 ...

  7. os.remove() 删除文件

    概述 os.remove() 方法用于删除指定路径的文件.如果指定的路径是一个目录,将抛出OSError. 在Unix, Windows中有效 语法 remove()方法语法格式如下: os.remo ...

  8. pip未找到

    命令终端运行 sudo easy_install pip 安装成功后最后会显示 Installed /Library/Python/2.7/site-packages/pip-9.0.1-py2.7. ...

  9. 键盘侠Linux教程(五)| 基本权限管理

    基本权限管理 权限的介绍 权限位的含义 前面讲解ls命令时,我们已经知道长格式显示的第一列就是文件的权限,例如: [root@es ~]# ls -l anaconda-ks.cfg -rw----- ...

  10. Beta阶段代码与规范

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 团队进行Beta冲刺--代码规范与计划 作业正文 如下 其他参考文献 ... ...