R语言日常笔记(1)filter函数

在处理数据时,过滤数据是最基本的操作之一。 如果想删除一部分无效或者根本不感兴趣的数据。 dplyr有filter()函数来做这样的过滤。 使用dplyr,可以帮助使用者像使用SQL或者传统BI工具以简单且更直观的方式进行过滤。

导入数据,这一次主要使用的是flight数据集

rm(list=ls())

library(nycflights13)

library(dplyr)

flights

> flights

# A tibble: 336,776 x 19

year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time arr_delay carrier

1 2013 1 1 517 515 2 830 819 11 UA

2 2013 1 1 533 529 4 850 830 20 UA

3 2013 1 1 542 540 2 923 850 33 AA

4 2013 1 1 544 545 -1 1004 1022 -18 B6

5 2013 1 1 554 600 -6 812 837 -25 DL

6 2013 1 1 554 558 -4 740 728 12 UA

7 2013 1 1 555 600 -5 913 854 19 B6

8 2013 1 1 557 600 -3 709 723 -14 EV

9 2013 1 1 557 600 -3 838 846 -8 B6

10 2013 1 1 558 600 -2 753 745 8 AA

# ... with 336,766 more rows, and 9 more variables: flight , tailnum , origin ,

# dest , air_time , distance , hour , minute , time_hour

>

挑选carrier列为UA的行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(carrier == "UA")

# A tibble: 58,665 x 6

flight carrier origin dep_delay arr_delay air_time

1 1545 UA EWR 2 11 227

2 1714 UA LGA 4 20 227

3 1696 UA EWR -4 12 150

4 194 UA JFK -2 7 345

5 1124 UA EWR -2 -14 361

6 1187 UA EWR -1 -8 337

7 1077 UA EWR 0 -17 157

8 303 UA JFK 11 14 366

9 496 UA LGA -4 1 229

10 1665 UA EWR -2 29 366

# ... with 58,655 more rows

挑选carrier列为UA同时origin为LGA的行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(carrier == "UA" & origin == "LGA")

# A tibble: 8,044 x 6

flight carrier origin dep_delay arr_delay air_time

1 1714 UA LGA 4 20 227

2 496 UA LGA -4 1 229

3 883 UA LGA 1 -6 243

4 1092 UA LGA 9 20 135

5 473 UA LGA -4 3 238

6 477 UA LGA 2 -4 249

7 255 UA LGA 1 13 154

8 1004 UA LGA 2 11 237

9 1086 UA LGA 134 145 248

10 405 UA LGA 13 34 256

# ... with 8,034 more rows

>

挑选carrier列不为UA同时origin为LGA的行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(carrier != "UA" & origin == "LGA")

# A tibble: 96,618 x 6

flight carrier origin dep_delay arr_delay air_time

1 461 DL LGA -6 -25 116

2 5708 EV LGA -3 -14 53

3 301 AA LGA -2 8 138

4 707 AA LGA -1 31 257

5 371 B6 LGA 0 -7 152

6 4650 MQ LGA 0 12 134

7 1919 DL LGA -8 -8 170

8 4401 MQ LGA -3 16 105

9 1837 AA LGA 13 5 153

10 4599 MQ LGA -6 10 166

# ... with 96,608 more rows

>

挑选carrier列为UA或者AS行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(carrier %in% c( 'AA' , 'AS' ))%>%

count(carrier)

# A tibble: 2 x 2

carrier n

1 AA 32729

2 AS 714

挑选carrier列不为UA或者AS行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(!carrier %in% c( 'AA' , 'AS' ))%>%

count(carrier)

# A tibble: 14 x 2

carrier n

1 9E 18460

2 B6 54635

3 DL 48110

4 EV 54173

5 F9 685

6 FL 3260

7 HA 342

8 MQ 26397

9 OO 32

10 UA 58665

11 US 20536

12 VX 5162

13 WN 12275

14 YV 601

>

挑选arr_delay列为NA的行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(is.na(arr_delay))

# A tibble: 9,430 x 6

flight carrier origin dep_delay arr_delay air_time

1 4525 MQ LGA -5 NA NA

2 3806 EV EWR 29 NA NA

3 4413 MQ LGA -5 NA NA

4 1228 UA EWR 29 NA NA

5 3325 9E JFK 59 NA NA

6 4333 EV EWR 22 NA NA

7 4204 EV EWR 46 NA NA

8 4308 EV EWR NA NA NA

9 791 AA LGA NA NA NA

10 1925 AA LGA NA NA NA

# ... with 9,420 more rows

挑选arr_delay列不为NA的行(观测值)

flights %>%

select(flight, carrier, origin, dep_delay,

dep_delay, arr_delay, air_time)%>%

filter(!is.na(arr_delay))

# A tibble: 327,346 x 6

flight carrier origin dep_delay arr_delay air_time

1 1545 UA EWR 2 11 227

2 1714 UA LGA 4 20 227

3 1141 AA JFK 2 33 160

4 725 B6 JFK -1 -18 183

5 461 DL LGA -6 -25 116

6 1696 UA EWR -4 12 150

7 507 B6 EWR -5 19 158

8 5708 EV LGA -3 -14 53

9 79 B6 JFK -3 -8 140

10 301 AA LGA -2 8 138

# ... with 327,336 more rows

除了上述的例子,filter函数目前还有filter_all, filter_at,filter_if三个补充函数,这三个函数使得filter函数更加强大。

filter_all函数(一般用于使用者想对数据集所有列进行筛选操作时)

> library(ggplot2)

> mtcars %>%

+ head()

mpg cyl disp hp drat wt qsec vs am gear carb

Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4

Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4

Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1

Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

挑选任意一列数值大于150的行(观测值)

> mtcars %>%

+ filter_all(any_vars(. > 150))%>%

+ head()

mpg cyl disp hp drat wt qsec vs am gear carb

1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4

2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4

3 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1

4 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

5 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

6 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4

>

挑选所有列数值均大于的行(观测值)

filter_all(mtcars, all_vars(. >0))

mpg cyl disp hp drat wt qsec vs am gear carb

1 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1

2 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1

3 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2

4 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1

5 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1

6 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2

7 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2

其他操作

> b

> b

mpg cyl disp hp drat wt qsec vs

Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0

Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0

Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1

Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1

Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0

Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1

Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0

Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1

> filter_all(b, all_vars(. != 0))

#挑选所有列数值均不等于0的行(观测值)

mpg cyl disp hp drat wt qsec vs

1 22.8 4 108.0 93 3.85 2.320 18.61 1

2 21.4 6 258.0 110 3.08 3.215 19.44 1

3 18.1 6 225.0 105 2.76 3.460 20.22 1

4 24.4 4 146.7 62 3.69 3.190 20.00 1

> filter_all(b, any_vars(. != 0))

#挑选有任意列数值不等于0的行(观测值)

mpg cyl disp hp drat wt qsec vs

1 21.0 6 160.0 110 3.90 2.620 16.46 0

2 21.0 6 160.0 110 3.90 2.875 17.02 0

3 22.8 4 108.0 93 3.85 2.320 18.61 1

4 21.4 6 258.0 110 3.08 3.215 19.44 1

5 18.7 8 360.0 175 3.15 3.440 17.02 0

6 18.1 6 225.0 105 2.76 3.460 20.22 1

7 14.3 8 360.0 245 3.21 3.570 15.84 0

8 24.4 4 146.7 62 3.69 3.190 20.00 1

> filter_all(b, any_vars(. >200))

#挑选有所有列数值大于200的行(观测值)

mpg cyl disp hp drat wt qsec vs

1 21.4 6 258 110 3.08 3.215 19.44 1

2 18.7 8 360 175 3.15 3.440 17.02 0

3 18.1 6 225 105 2.76 3.460 20.22 1

4 14.3 8 360 245 3.21 3.570 15.84 0

filter_at函数(一般用于使用者想对数据集中的符合条件的列进行筛选操作时(注:虽然是以特定列进行筛选的,但是最后呈现的数据还是全部列)

> mtcars %>%

+ filter_at(vars(starts_with("d")), any_vars((. %% 2) == 0))

mpg cyl disp hp drat wt qsec vs am gear carb

1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4

2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4

3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1

5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

6 14.3 8 360 245 3.21 3.570 15.84 0 0 3 4

7 10.4 8 472 205 2.93 5.250 17.98 0 0 3 4

8 10.4 8 460 215 3.00 5.424 17.82 0 0 3 4

9 14.7 8 440 230 3.23 5.345 17.42 0 0 3 4

10 15.5 8 318 150 2.76 3.520 16.87 0 0 3 2

11 15.2 8 304 150 3.15 3.435 17.30 0 0 3 2

12 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4

13 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2

filter_if函数(一般用于使用者想对数据集中的符合条件的列进行转换,然后进行观测值的筛选时)。

> b

> b

mpg cyl disp hp drat wt qsec vs

Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0

Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0

Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1

Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1

Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0

Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1

Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0

Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1

#首先将b的所有列的值转换成整数,然后筛选出其中不等0的观测值

> filter_if(b, ~ all(floor(.) == .),all_vars(. != 0))

mpg cyl disp hp drat wt qsec vs

1 22.8 4 108.0 93 3.85 2.320 18.61 1

2 21.4 6 258.0 110 3.08 3.215 19.44 1

3 18.1 6 225.0 105 2.76 3.460 20.22 1

4 24.4 4 146.7 62 3.69 3.190 20.00 1

当有多个列需要进行条件筛选时(下列两种方法结果一致,都是基于mpg和disp进行行筛选)

> mtcars %>%

+ head()

mpg cyl disp hp drat wt qsec vs am gear carb

Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4

Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4

Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1

Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1

Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2

Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1

>

>

> vars

> cond

> mtcars %>%

+ as_tibble()%>%

+ filter(

+ .data[[vars[[1]]]] > cond[[1]],

+ .data[[vars[[2]]]] > cond[[2]]

+ )

# A tibble: 8 x 11

mpg cyl disp hp drat wt qsec vs am gear carb

1 21 6 160 110 3.9 2.62 16.5 0 1 4 4

2 21 6 160 110 3.9 2.88 17.0 0 1 4 4

3 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1

4 24.4 4 147. 62 3.69 3.19 20 1 0 4 2

5 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2

6 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4

7 19.2 8 400 175 3.08 3.84 17.0 0 0 3 2

8 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6

>

>

>

> mtcars%>%

+ as_tibble()%>%

+ filter( mpg> 19 & disp > 140)

# A tibble: 8 x 11

mpg cyl disp hp drat wt qsec vs am gear carb

1 21 6 160 110 3.9 2.62 16.5 0 1 4 4

2 21 6 160 110 3.9 2.88 17.0 0 1 4 4

3 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1

4 24.4 4 147. 62 3.69 3.19 20 1 0 4 2

5 22.8 4 141. 95 3.92 3.15 22.9 1 0 4 2

6 19.2 6 168. 123 3.92 3.44 18.3 1 0 4 4

7 19.2 8 400 175 3.08 3.84 17.0 0 0 3 2

8 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6

c 语言filter过滤方法,R语言日常笔记(1)filter函数相关推荐

  1. R语言心得说:R语言之xlsx包读写Excel数据

    R语言心得说:R语言之xlsx包读写Excel数据 感谢Adrian A. Drǎgulescu发布的xlsx包 工具准备 [基础]简单读取excel文件数据 [基础]简单写入数据到excel文件 [ ...

  2. R 语言怎么保存工作目录到当前路径_【R语言基础】01.R语言软件环境搭建及常用操作...

    一.R语言简介 R语言是专业的统计分析软件,来自著名数据科学网站(http://www.kdnuggets.com/)发起的一个2019年统计分析和数据挖掘软件使用情况的调查结果: 表明R语言是该领域 ...

  3. r语言 读服务器数据,R语言数据实战 | 安装R语言

    原标题:R语言数据实战 | 安装R语言 1.R的获取和安装 获取和安装R很容易(这也是它"亲民"的地方),具体步骤如下: Step 1: 登陆R语言官方网站https://www. ...

  4. java集成r语言_R语言- 实验报告 - 利用R语言脚本与Java相互调用

    一.实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调用 ...

  5. js中数组filter过滤奇偶数_js--数组的filter()过滤方法的使用

    前言 你还在通过for循环遍历数组吗?你还在遍历之后一项一项的通过if判断过滤你需要的数据吗?你还在写着一大堆代码实现一个简单的过滤数据功能吗?那么,今天他来了.他就是这里要介绍的es6中数组filt ...

  6. filter() 过滤方法

    //filter() 过滤方法 var a = [1,2,3,4,2,4,5,2,1,4,5,5,7].filter(function(item,index){return item >3}); ...

  7. 数组的filter过滤方法将对象数组内容改变——js基础积累——犯傻记录

    最近在写后台管理系统,遇到一个多种类型报价的功能,内容不难,但是需要各种判断加处理.有时候就会不小心出现犯傻的情况... 1.场景 需要在一个对象数组中过滤出符合条件的对象. let arr = [{ ...

  8. R 回归 虚拟变量na_工具amp;方法 | R语言机器学习包大全(共45个包)

    机器学习,是一门多学科交叉的人工智能领域的分析技术,它使用算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测. 目前,常见机器学习的研究方向主要包括决策树.随机森林.神经网络.贝叶斯学习和支 ...

  9. r语言工作路径linux,R语言实用基础知识_工作路径-注释-安装和卸载R包_2019-12-01...

    R语言的实用基础知识有很多,都是我在工作和学习中所整理的,有的是看书整理的,也有的是从网络上的各种博客.各种资源获取的,所以我采用日更的方式进行支持整理和更新,希望能够帮到屏幕前的你! 今天是我日更的 ...

最新文章

  1. 人脸对齐--Robust face landmark estimation under occlusion
  2. Oracle的闪回技术--闪回错误的DML操作
  3. 深度学习对抗样本的八个误解与事实
  4. android java广播,[原]Android应用程序发送广播(sendBroadcast)的过程分析
  5. Linux ALSA声卡驱动之三:PCM设备的创建
  6. 项目学生:Web服务集成
  7. Python用过的小知识备忘录
  8. 【Vue】五个最常用的事件修饰符
  9. JAVA写的多线程下载程序,并具有断点续传功能
  10. excel python自动化_excel表自动化-python
  11. 解决MacOS升级后出现xcrun: error: invalid active developer path, missing xcrun的问题
  12. 一行一行分析JQ源码学习笔记-03
  13. Display yuv formatted video by shader
  14. java中通过正则表达式提取数字
  15. 计算机软件国民经济行业代码,国民经济行业类别及代码.DOC
  16. 实现有管理功能的ASP留言板
  17. PX4 编译报错问题解决方法、PX4切换固定版本编译
  18. MATLAB----小波去噪
  19. GREAT-UPD 开源软件使用笔记
  20. 面试相关-转载-well,yzl——持续更新

热门文章

  1. 安卓学习笔记 1.1 安卓Android Studio应用
  2. 小d课堂商业级全栈多端项目-小滴云在线教育平台-xiaoecf
  3. linux 把数字变字符串,C语言中将数字转换为字符串的方法
  4. 判断二叉树是否为满二叉树
  5. 安装微软官方提供的win 10 PE 系统到U盘
  6. UnityShader[4]几何着色器与可交互草地
  7. java将多个文件写入到一个文件流中再有规律的取出_编写java程序,往一个txt文件里写入学生的基本信息,然后再读出这些信息并打印出来,最后把该文件拷贝到指...
  8. web报表工具FineReport常见的数据集报错错误代码和解释 1
  9. GJB 标准化工作报告(模板)
  10. 下拉框系统甄选火星推荐_微博下拉框技术首选15火星牛