Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
250 views
in Technique[技术] by (71.8m points)

Filter by conditions for multiple columns in R

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
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...