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的行