美文网首页
dplyr包中filter类函数的使用

dplyr包中filter类函数的使用

作者: 上校的猫 | 来源:发表于2019-04-15 10:58 被阅读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的行

    相关文章

      网友评论

          本文标题:dplyr包中filter类函数的使用

          本文链接:https://www.haomeiwen.com/subject/vtmywqtx.html