我试图在YEAR为1989时过滤掉SRA列中的NA值。换句话说,我想保留除YEAR为1989时SRA中的NA以外的所有值。这包括保留在Year和NA中都具有NA值的记录。 SRA栏
SRA <- c(NA, NA, NA, NA, NA, 5, 6, NA, NA, NA, 7, 10, NA, NA, 7, NA)
YEAR <- c(1989, 1989, 1989, 1989, 1989, 1989, 1989, 1990, 1990, 1990, 1990, 1990, 1991, 1991, NA, NA)
ALLPOP3 <- data.frame(YEAR, SRA)
我尝试了以下操作,但它过滤掉了YEAR和SRA具有NA值的记录
library(dplyr)
ALLPOP4 <- ALLPOP3 %>%
filter(YEAR != 1989 | !is.na(SRA))
有没有一种方法可以调整代码以保留YEAR和SRA具有NA值的记录?谢谢
所需输出:
YEAR SRA
1 1989 5
2 1989 6
3 1990 NA
4 1990 NA
5 1990 NA
6 1990 7
7 1990 10
8 1991 NA
9 1991 NA
10 NA 7
11 NA NA
我们可以使用&
和取反(!
)
library(dplyr)
ALLPOP3 %>%
filter(!(YEAR == 1989 & is.na(SRA))|(is.na(YEAR) & is.na(SRA)))
# YEAR SRA
#1 1989 5
#2 1989 6
#3 1990 NA
#4 1990 NA
#5 1990 NA
#6 1990 7
#7 1990 10
#8 1991 NA
#9 1991 NA
#10 NA 7
#11 NA NA
或者以更紧凑的方式
ALLPOP3 %>%
filter(!(YEAR == 1989 & !is.na(YEAR) & is.na(SRA)))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句