数据整理—dplyr包(filter系列)

640?wx_fmt=png

作者:小橙子

来源:小橙子学数据分析


数据整理/清洗,占据了数据分析80%的时间

dplyr提供了一种方式,可以高效处理数据

dplyr是什么?

官方解释: a grammar of data manipulation


主要介绍dplyr中,几个函数


1filter 系列  #筛选满足条件的样本(cases)
2select 系列  #筛选满足条件的变量
3mutate 系列  #生成新的变量
4summarise 系列 #概括数据集信息
5join 系列  #关联函数,同SQL中的join


在数据处理过程中,经常会遇到这几个函数

filter系列:filter、filter_all、filter_at、filter_if

用法:filter(.data, ...)

备注:filter对group_by之后的数据集无效,并且对ungroup_by的数据集处理起来更快速


1library(tidyverse) #直接加载tidyverse,使用iris、mtcars数据集来演示
2#iris数据集中,筛选Species为“setosa”,并且Sepal.Length大于5的样本
3filter(iris, Species == "setosa" & Sepal.Length >= 5.5#"&"也可以替换成“,”
4# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5# 5.8         4.0          1.2         0.2  setosa
6# 5.7         4.4          1.5         0.4  setosa
7# 5.7         3.8          1.7         0.3  setosa
8# 5.5         4.2          1.4         0.2  setosa
9# 5.5         3.5          1.3         0.2  setos


filter支持以下几种判断形式:

  1. 关系类型:<、 <= 、 >、 >=、==、!=、is.na()、 !is.na()

  2. &、 |、 !、 xor() #针对向量集的操作判断

  3. between()、%in%、 near()  #sqrt(2) ^ 2 == 2 返回FALSE,near(sqrt(2) ^ 2, 2)则TRUE

  4. all_vars()、any_vars() #出现于filter_all、filter_at、filter_if中,作为判断条件


filter系列,还有几个变异函数filter_all、filter_at、filter_if

用法:filter_all(.tbl, .vars_predicate)

          filter_at(.tbl, .vars, .vars_predicate)

          filter_if(.tbl, .predicate, .vars_predicate)


1filter_all(mtcars, any_vars(. > 150)) #筛选任何变量>150的样本
2filter_at(mtcars, vars(starts_with("d")), any_vars((. %% 2) == 0)) 
3#筛选变量以“d”结尾,并且变量 "%%2" 等于0
4filter_if(mtcars, ~ all(floor(.) == .), all_vars(. != 0))
5# 筛选变量向下取整 == 原变量数值, 并且这部分变量的数值!= 0 的样本集


filter总结:

 filter通过“判断条件”筛选cases,“判断条件”则类似于SQL中的“where”语句。

 (select * from table where condition is true)

 filter的欠缺,在于每次都返还全部变量的样本,无法筛选具体的变量。

 如何实现对样本集的变量筛选,请关注下一篇“select


——————————————

往期精彩:

  • 扎克伯格为提高员工工作效率,亲自做了这 26 张 PPT ,值得收藏

  • 50张图,带你认识大学各专业

  • 拓宽自己的技术栈 | 推荐几个其他领域的公众号

  • R语言中文社区2018年终文章整理(作者篇)

  • R语言中文社区2018年终文章整理(类型篇)

640?wx_fmt=png

你可能感兴趣的:(数据整理—dplyr包(filter系列))