【问题标题】:Filter by conditions for multiple columns in R按条件过滤R中的多列
【发布时间】:2017-10-26 21:26:03
【问题描述】:

Plan_Year1 less than YEAR 以及CAT 列中NA 的所有行时,我需要按条件进行过滤。

我有以下代码:

Table <- Table %>% filter(YEAR == Plan_Year+1)

如何包含/修改上面的代码以获取 CAT 列中包含 NA 的所有行?

提前致谢。

表:

YEAR     CAT      Plan_Year
1998     NA       NA
1998     125-1    1997    
1998     171-2    1997
1998     NA       NA  
.
.
2017     114-1    202

【问题讨论】:

    标签: r filter conditional-statements


    【解决方案1】:

    使用|is.na

    Table %>% filter(YEAR == Plan_Year+1|is.na(CAT))
      YEAR   CAT Plan_Year
    1 1998  <NA>        NA
    2 1998 125-1      1997
    3 1998 171-2      1997
    4 1998  <NA>        NA
    

    或者使用基础 R

    dt[which(dt$YEAR == (dt$Plan_Year + 1)|is.na(dt$CAT)),]
      YEAR   CAT Plan_Year
    1 1998  <NA>        NA
    2 1998 125-1      1997
    3 1998 171-2      1997
    4 1998  <NA>        NA
    

    【讨论】:

      【解决方案2】:

      使用|(或)组合这两个条件:

      Table %>% filter(YEAR == Plan_Year + 1 | is.na(CAT))
      

      【讨论】:

      • 哇~这么近:-)
      • 如果他想同时过滤这两个条件,他不想&amp;而不是|
      • @tbradley OP 声明 include rows with NA Cat Columns,根据我的理解,这意味着 or 条件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      相关资源
      最近更新 更多