按R中多列的条件过滤

时间:2017-10-26 21:26:03

标签: r filter conditional-statements

我需要根据Plan_Year 1 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

2 个答案:

答案 0 :(得分:2)

使用|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

答案 1 :(得分:1)

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

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