如何移除DataFrame中ndc和ndtem列均含NA的行?
修正方案及替代写法
你的需求是移除ndc和ndtem两列同时为NA的行,保留其余所有行(包括其中一列有值、另一列NA的情况),但现有三种写法都是只保留两列都非NA的行,逻辑不符合需求,以下是修正后的代码:
基础索引写法
# 只移除两列均为NA的行 a <- a[!(is.na(a$ndc) & is.na(a$ndtem)), ]
dplyr管道写法
library(dplyr) a <- a %>% filter(!(is.na(ndc) & is.na(ndtem)))
complete.cases的变通写法
如果想用complete.cases,可以通过判断每行两列是否全为NA再取反:
# 标记每行ndc和ndtem是否全为NA,再保留非标记行 all_na <- apply(a[, c("ndc", "ndtem")], 1, function(x) all(is.na(x))) a <- a[!all_na, ]
验证方法
可以用以下代码确认处理结果是否符合预期:
# 查看原数据中两列均为NA的行数 sum(is.na(a$ndc) & is.na(a$ndtem)) # 处理后再次查看,结果应为0 sum(is.na(a$ndc) & is.na(a$ndtem))
内容的提问来源于stack exchange,提问作者creusac
相关产品推荐
相关产品推荐

