r - 根据另一列中的条件过滤非 NA 值,保留所有其他记录
问题描述
当 YEAR 为 1989 时,我试图过滤掉 SRA 列中的 NA 值。换句话说,当 YEAR 为 1989 时,我想在 SRA 中保留除 NA 之外的所有值。这包括保留在 Year 和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
解决方案
我们可以使用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 NA
推荐阅读
- python - cv2.imwrite 不保存图像
- linux - 使用 bash 脚本进行复杂操作
- r - 尝试为有分类变量时自动绘制给定模型的变量响应的包创建函数
- objective-c - 'SSLClose' 已弃用:在 iOS 13.0 中首次弃用 - 不再受支持。使用 Network.framework
- javascript - 页面总是自动聚焦在 textarea 上,然后 scrolltotop 不起作用
- c# - 模型未围绕正确的轴旋转
- python - 组合两个列表并在给定列表 2 的情况下输出列表 1 的所有可能组合
- php - 我如何解决迁移 Voyager(管理面板)时发生的此异常 BadMethodCallException date_time_set 不存在
- shell - 以数字序列/顺序复制或 rsync
- python - Python - 使用递归函数按字母顺序打印出 trie