数据处理|R-dplyr
dplyr包实现数据的清洗处理,包括数据整合、关联、排序、筛选、汇总、分组等。
1)安装、加载dplyr包、准备数据
install.packages("dplyr") #加载dplyr包
使用dplyr包处理数据前,建议先将数据集转换为tbl对象。
data(iris) #本文使用iris示例数据集。
2)数据记录筛选(行筛选)
filter函数:按指定条件筛选符合条件中逻辑判断要求的数据记录。
filter(iris, Sepal.Length == 7)
Q:筛选花萼长大于7,花萼宽带大于等于3的数据?
filter(iris, Sepal.Length > 7 & Sepal.Width>3.0)
Q:筛选出Species 为setosa或virginica的行
filter(iris,Species %in% c("setosa","virginica"))
3)变量筛选(列)
select函数:可以通过指定列名选择指定的变量进行分析,得到的为选择的列。
select(iris,Sepal.Width,Petal.Length,Species)
其他特殊选择,可匹配:
select(iris,contains("." )) #选取名称中含有字符的列
区别:Filter&Select
Filter:通过一些准则选择观测值(行)
Select:通过名字来选择变量(列)
更名变量名: Select & Rename
head(select(iris,Sepal.W=Sepal.Width)) #只会保留选择的变量
4)数据排序(重要,大小,去除异常值)
arrange函数按给定的列名进行排序,默认为升序排列,也可以对列名加desc()进行降序排序。
arrange(iris,Sepal.Length) # 将数据按照Sepal.Length升序排序
5)变量变换/重构
mulate()函数可以数据拓展,也可以在保留原变量的基础上增加变量,进行数据处理。
mutate(iris,sepal = Sepal.Length + Sepal.Width)
transmute()函数在扩展新变量的时候,会删除所有原始变量。
transmute(iris,sepal = Sepal.Length + Sepal. Width) #计算一个或多个新列并删除原列
6)数据汇总
summarize()函数实现数据集聚合操作,将多个值汇总成一个值
summarise(iris,avg = mean(Sepal.Length))
利用概述函数概括数据,输入数值向量而返回单一数值:
first 向量的第一个值。
last 向量的最后一个值。
IQR 向量的IQR(四分位距) 。
Min ;Max Mean ;Median ;Var ;Sd等
summarise(iris, max(Petal.Width), first(Sepal.Width)) #返回数据框中变量的最大值及第一四分位值
7)数据分组
group_by函数对数据进行分组后,结合summarize函数,可以对分组数据进行汇总统计。
Q:按品种分组,分别计算花萼宽度的均方差
summarise(group_by(iris,Species),sd=sd(Petal.Width))
8)连接操作符
dplyr包里还新引进了一个操作符,%>%, 使用时把数据集名作为开头, 然后依次对此数据进行多步操作。
iris %>%group_by(Species) %>% summarise(sd=sd(Petal.Width)) #iris数据集,按Species分组,汇总Petal.Width的sd值,
9)抽样
sample_n()随机抽取指定数目的样本,sample_frac()随机抽取指定百分比的样本,默认都为不放回抽样,通过设置replacement =TRUE可改为放回抽样,可以用于实现Bootstrap抽样。
sample_n(mtcars, 50, replace = TRUE) #随机有重复的取50行数
10)数据联结
dplyr包也提供了数据集的连接操作,如左连接、右连接、内连接等:
inner_join(x,y,by = NULL) #内连接,合并数据仅保留匹配的记录
by设置两个数据集用于匹配的字段名,默认使用全部同名字段进行匹配,如果两个数据集需要匹配的字段名不同,可以直接用等号指定匹配的字段名,如, by = c("a" = "b"),表示用x.a和y.b进行匹配。
11)数据合并
dplyr包中也添加了类似cbind()函数和rbind()函数功能的函数,它们是bind_cols()函数和bind_rows()函数。
注意:bind_rows()函数需要两个合并对象有相同的列数,而bind_cols()函数则需要两个合并对象有相同的行数。
查看自带的参考资料:vignette(package = "dplyr") vignette("introduction", package = "dplyr")
- MVC中实现加载更多
- 在ASP.NET MVC 中获取当前URL、controller、action
- [转自Scott]ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景
- MVC前台Post/Get异步获得数据时参数的取值问题
- IQueryable与foreach的困惑?
- ModalPopupExtender用法示例
- MVC中局部视图的使用
- MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题
- ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
- View与Control间的数据交互
- C#中Dispose和Close的区别!
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- ASP.Net MVC框架配置与分析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP简单实现图片格式转换(jpg转png,gif转png等)
- 在thinkphp5.0路径中实现去除index.php的方式
- Laravel5.5 手动分页和自定义分页样式的简单实现
- laravel自定义分页的实现案例offset()和limit()
- Laravel6.0.4中将添加计划任务事件的方法步骤
- Laravel 不同生产环境服务器的判断实践
- 解决thinkPHP 5 nginx 部署时,只跳转首页的问题
- Laravel 类和接口注入相关的代码
- laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
- laravel 如何实现引入自己的函数或类库
- PHP实现15位身份证号转18位的方法分析
- Yii框架的redis命令使用方法简单示例
- Laravel如何实现自动加载类
- 在Laravel中实现使用AJAX动态刷新部分页面
- laravel 自定义常量的两种方案