原标题:30 天学会R DAY 14:R语言必学包dplyr

第14天 R语言必学包dplyr

R语言非常讲究数据的整理,我们在7-13天的R语言学习内容中,着重都是关于R语言的整理,各种方法对数据进行整理,查看,对变量进行转换。dplyr包,主要也用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度。这个包对数据处理的方式相对之前的方法,更加简单,是医学数据分析必须要掌握的包。

dplyr包存在着上百个函数来帮助进行数据的整理,由于篇幅的关系,本文对主要的函数进行介绍,包括下述五个函数用法:

• 筛选: filter()

• 排列: arrange()

• 选择: select()

• 变形: mutate()

• 汇总: summarise()

• 分组: group_by()

• 合并:join()

首先,安装和导入dplyr

install.packages("dplyr")

library(dplyr)

导入之前数据集

t1

t2

str(t2)

str(t1)

1 筛选:filter()

按给定的逻辑判断筛选出符合要求的子数据集,之前我们已经通过大量的方法介绍过子集产生的方法,而filter()方法则更直接。

#产生t11数据集,SBP收缩压>=140的子集

t11=140)

#产生t11数据集,SBP收缩压>=140且DBP>=90舒张压的子集

t12=140,DBP>=90)

# 产生t11数据集,SBP收缩压>=140或DBP>=90舒张压的子集

t13=140 | DBP>=90)

#产生t11数据集,SBP收缩压>=140且DBP>=90舒张压的子集

t14=140 & DBP>=90)

str(t11)

str(t12)

str(t13)

# 上述程序,如果用常规R语言,则要

t12=140 & t1$DBP>=90, ]

相对来说更为复杂。

#分类数据转换

t21

2 排列: arrange()

排序功能,我们之前也学过,比如order(). Arrange 方法其实也更简单。

#根据SBP从小到大进行排序

arrange(t1,SBP)

#根据DBP从大到小进行排序

arrange(t1,desc(DBP))

#根据SBP和DBP,从小到大进行排序,先排SBP,SBP相同时,再排DBP

arrange(t1, SBP, DBP)

#根据SBP和DBP,从大到小进行DBP排序,DBP相同时,再排从小到大根据SBP排序

arrange(t1, desc(DBP), SBP)

3 选择: select()

用列名作参数来选择子数据集,这个功能很有意思,虽然医学数据分析用的不多。

t15

t16

t17

t18

select ( ) 更多的参数设置如下表

4.变形: mutate()

对已有列进行数据运算并添加为新列,这个是非常重要的数据转换功能。

# 计算BMI指数

t19

# 可以同时产生多个变量

t110

mutate( )可以调用的函数很多,以下是部分函数

log(), log2(), log10(): 对值求 log;

lead(), lag(): 返回序列中当前位置前第几个值或后第几个值;

cume_dist(): 计算比当前值还小的值的比例, 相当于计算 density;

ntile():把数据分成若干块, 看每个数据在具体拿一个块;

cumsum(), cummean(), cummin(), cummax(), cumany(), cumall():计算和 (sum), 均值 (mean), 最小值 (min), 最大值 (max), 任何为真 (any), 所有为真 (all);

na_if():把特定地值转换为 NA;

coalesce(): 找出若干列中第一个不为 NA 的值;

if_else(): 向量化的 ifelse 函数的效果.

recode: 把一系列值转换为其他值

case_when: 多条件选择.

比如:

t111

t21

5 汇总: summarise()

summarise()函数以及衍生函数,包括summarise_all, summarise_at,summarise_if主要进行数据的统计描述。

一般情况下,它们需要同时调动以下等其它函数来共同完成。

min():返回最小值

max():返回最大值

mean():返回均值

sum():返回总和

sd():返回标准差

median():返回中位数

IQR():返回四分位极差

n():返回观测个数

n_distinct():返回不同的观测个数

first():返回第一个观测

last():返回最后一个观测

nth():返回n个观测

#求DBP的均数和中位数

summarise(t1, DBP_mean = mean(DBP), DBP_median = median(DBP))

#求DBP和SBP的总个数、均数和标准差,需要调用summarise_at 函数,var()函数,funs() 函数

summarise_at(t1, vars(DBP, SBP), funs(n(), mean, median))

#求定量变量数据的均数和标准差,需要调用summarise_if 函数,var()函数,funs() 函数

summarise_if(t1, is.numeric, funs(n(),mean,median))

#存在着缺失值的时候,计算定均数和标准差,需要调用summarise_at 函数,var()函数,funs() 函数

summarise_at(t1, vars(DBP, SBP),

funs(n(), missing = sum(is.na(.)),

mean(., na.rm = TRUE),

median(.,na.rm = TRUE)))

6 分组: group_by()

当对数据集通过group_by()添加了分组信息后,mutate(),arrange() 和 summarise() 函数会自动对数据库执行分组操作。

group_by()的功能类似于SPSS拆分文件夹的功能,十分地好用。

tt1

tt2

或者直接将上述两句整合成一句

tt3

tt3

7. 数据库合并join()

在之前的内容中,我们介绍过用rbind,cbind,merge等函数进行数据库合并,但利用join()函数,花样更多。

left_join(t1,t2)

right_join(t1,t2)

inner_join(t1,t2,by=c(“”))

full_join(t1,t2, by = c("first", "last"))

semi_join(t1,t2, by = c("first", "last"))

anti_join(t1,t2, by = c("first", "last"))

前4种属于变形连接(mutating joins),后2种属于过滤连接(filtering joins)。

semi-joins基于第二个数据集的信息来过滤第一个数据集的数据。anti-joins找出合并时哪些行不能匹配第二个数据集

8. dplyr 包其它重要函数

由于篇幅的关系,不再一一介绍dplyr 包的函数,这里可以介绍下,有兴趣者可以进一步学习,比如dplyr 包的重命名rename(), 数据集重新再抽样sample(),数据转换transmute()都是是否有用的函数。

DAY14的内容就介绍到这里!

最后,一个月就能学会R语言,你敢挑战一下吗?

想挑战的话,请加入R语言的交流群吧?(由于群规模限制,请先加入郑老师微信号注明R语言即可)

关注公众号,请点击“阅读原文”,即可获得30天学会R语言的所有讲义的百度网盘链接下载! (下载密码请关注公众号,发送“30天”即可)返回搜狐,查看更多

责任编辑:

r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr相关推荐

  1. r语言必学的十个包肖凯_家长专栏自闭症儿童语言康复训练

    自闭症是一种广泛意义上的发育障碍,在儿童当中较为常见.自闭症的一种重要表现就是语言能力障碍和表达能力障碍.语言又是建立人际关系.认识世界.表达情感的最主要方式和途径,自闭症儿童存在的语言障碍在某种程度 ...

  2. c语言中不带任何修饰符的浮点变量,江苏省计算机等级考试二级C语言笔试辅导题目...

    <江苏省计算机等级考试二级C语言笔试辅导题目>由会员分享,可在线阅读,更多相关<江苏省计算机等级考试二级C语言笔试辅导题目(155页珍藏版)>请在装配图网上搜索. 1.1 江苏 ...

  3. R语言效用分析 ( 效能分析、Power analysis)确定样本量、假设检验与两类错误、pwr包进行效用分析 ( 效能分析、Power analysis)的常用函数列表

    R语言效用分析 ( 效能分析.Power analysis)确定样本量.假设检验与两类错误.pwr包进行效用分析 ( 效能分析.Power analysis)的常用函数列表 目录

  4. R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点

    R语言gganimate包创建可视化gif动图.可视化动图:.gganimate包创建动态线型图动画基于transition_time函数.使用geom_point函数显示动画移动的数据点 目录

  5. R语言dplyr包的top_n函数返回dataframe或tibble的前N行数据、dplyr包的top_frac函数返回dataframe或tibble的前百分之N(N%)的数据

    R语言dplyr包的top_n函数返回dataframe或tibble的前N行数据.dplyr包的top_frac函数返回dataframe或tibble的前百分之N(N%)的数据 目录

  6. R语言偏相关或者部分相关性系数计算实战:通过拟合两个回归模型、或者pysch包计算偏相关系数(Partial Correlation)、通过方差分析获得偏相关系数的F统计量(偏F检验、二型检验)

    R语言偏相关或者部分相关性系数计算实战:通过拟合两个回归模型.或者pysch包计算偏相关系数(Partial Correlation).通过方差分析获得偏相关系数的F统计量(偏F检验.二型检验) 目录

  7. R语言可视化R原生plot函数与ggplot可视化结果组合、整合输出实战:原生R绘图plot函数可视化、ggplot2包可视化、R原生plot函数与ggplot可视化结果组合

    R语言可视化R原生plot函数与ggplot可视化结果组合.整合输出实战:原生R绘图plot函数可视化.ggplot2包可视化.R原生plot函数与ggplot可视化结果组合 目录

  8. R语言根据日历周期处理时间序列数据(周、月、年等):使用xts包的apply.monthly函数和mean函数计算时间序列的月平均值(monthly)

    R语言根据日历周期处理时间序列数据(周.月.年等):使用xts包的apply.monthly函数和mean函数计算时间序列的月平均值(monthly) 目录

  9. R语言根据日历周期处理时间序列数据(周、月、年等):使用xts包的apply.yearly函数和mean函数计算时间序列的年平均值(yearly)

    R语言根据日历周期处理时间序列数据(周.月.年等):使用xts包的apply.yearly函数和mean函数计算时间序列的年平均值(yearly) 目录

最新文章

  1. 10.QML Qt Quick Controls 2之imagine style
  2. FD.io/VPP — GRE vNET
  3. Linux内核spin_lock与spin_lock_irq分析
  4. 岗位推荐 | 微软小冰团队招聘数据挖掘/算法工程师实习生
  5. 转行学Java,如何才能成为年薪50万的Java程序员呢?
  6. 关于LR录制时不能自动启动IE浏览器的解决方法
  7. 将涡轮增压器添加到JEE Apps
  8. 【论文翻译】学习新闻事件预测的因果关系
  9. Ubuntu16.04下codeblocks16.01安装,适用于不同的架构
  10. Java设计模式学习总结(13)——结构型模式之享元模式
  11. 字节流转字符流OutputStreamWriter、InputStreamReader,关闭流的方法
  12. 四、Angular新建组件和使用
  13. RDD和DataFrame和DataSet三者间的区别
  14. ELK 企业内部日志分析系统
  15. java textarea滚动条_Java Swing TextArea 滚动条和获得焦点
  16. Linux svn服务器自身回退版本
  17. 20160402系统集成管理工程师(test3)
  18. Keras入门级MNIST手写数字识别超级详细教程
  19. java三国鼎立,网页游戏三国鼎立(武三国)一键服务端带教程及修改说明
  20. 使用Python读取Windows注册表

热门文章

  1. 来自iSpy整理的最全海康大华IPC的RTSP连接地址
  2. Shell-05 sed
  3. JavaScript中Exists函数
  4. (转载)php array_merge 和 两数组相加区别
  5. 位置高度ios 开发中跟绘图相关的CGFloat,CGPoint,CGSize,CGRect,CGRectZero
  6. STL学习小记--与C++模板相关的几个特性
  7. Live Writer
  8. Jquery性能优化(转自蓝色理想)
  9. 动态创建DataGrid的模版列(转)
  10. 模生物嗅觉的神经算法,能让电脑芯片识别气味