简介

dplyr 官方文档
dplyr 包主要用于数据框(data.frame)数据类型的处理。
filter 主要用于对特定的变量的观测值筛选(就是筛选特定的行,select用于筛选特定的列)。

例子

筛选1月1日的数据

  1. filter(flights, month == 1, day == 1)
  2. #> # A tibble: 842 x 19
  3. #> year month day dep_time sched_dep_time dep_delay arr_time
  4. #> <int> <int> <int> <int> <int> <dbl> <int>
  5. #> 1 2013 1 1 517 515 2 830
  6. #> 2 2013 1 1 533 529 4 850
  7. #> 3 2013 1 1 542 540 2 923
  8. #> 4 2013 1 1 544 545 -1 1004
  9. #> # … with 838 more rows, and 12 more variables: sched_arr_time <int>,
  10. #> # arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
  11. #> # origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
  12. #> # minute <dbl>, time_hour <dttm>

等价于下面的常规代码

  1. flights[flights$month == 1 & flights$day == 1, ]

也可以写成如下

  1. filter(flights, month == 1 & day == 1)

进阶使用方法

filter_all

对所有变量筛选符合条件的行
例如筛选出所有包含缺失值的行

  1. filter_all(mtcars, any_vars(is.na(.)))

也可以写成

  1. filter_all(mtcars, all_vars(is.na(.)))

filter_at

先筛选出特定变量,再根据这些变量进行行筛选

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

上面代码表示,包含“d”的变量中能整除2的行

filter_if

使用函数对变量筛选,再根据这些变量进行筛选

  1. filter_if(mtcars, ~ all(floor(.) == .), all_vars(. == 4))

代码表示筛选出是整数的变量中等于4的行