当年份为1989年时,我试图在SRA列中筛选出NA值。换句话说,我想保留所有的价值,但NA在SRA,当年份是1989年。这包括保留在年份和SRA列中都具有NA值的记录。
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)我尝试了以下方法,但是它过滤掉了年份和SRA具有安娜值的记录
library(dplyr)
ALLPOP4 <- ALLPOP3 %>%
filter(YEAR != 1989 | !is.na(SRA))有没有办法调整代码以保存年份和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发布于 2019-10-10 19:54:38
我们可以使用&和negate (!)
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)))发布于 2019-10-10 20:02:49
我们可以用stats::complete.cases来做
ALLPOP3[!complete.cases(ALLPOP3[,c("YEAR","SRA")]), ]
# YEAR SRA
# 1 1989 NA
# 2 1989 NA
# 3 1989 NA
# 4 1989 NA
# 5 1989 NA
# 8 1990 NA
# 9 1990 NA
# 10 1990 NA
# 13 1991 NA
# 14 1991 NA
# 15 NA 7
# 16 NA NAhttps://stackoverflow.com/questions/58330216
复制相似问题