dplyr包中filter类函数的使用

2019-04-15  本文已影响0人  上校的猫

简介

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

例子

筛选1月1日的数据

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

等价于下面的常规代码

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

也可以写成如下

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

进阶使用方法

filter_all

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

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

也可以写成

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

filter_at

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

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

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

filter_if

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

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

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

上一篇下一篇

猜你喜欢

热点阅读