Filter by conditions for multiple columns in R

馋奶兔 提交于 2020-01-07 09:32:09

问题


I need to filter by conditions when Plan_Year is 1 less than YEAR and all rows of NA in CAT column.

I have the following code:

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

How can I include/modify the code above to obtain all rows with NA in CAT column?

Thanks in advance.

Table:

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

回答1:


using | and 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

Or using base 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:


Use | (or) to combine the two conditions:

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


来源:https://stackoverflow.com/questions/46964091/filter-by-conditions-for-multiple-columns-in-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!