如何筛选包含NA的行?保留x或y含NA行,剔除均非NA行
筛选含缺失值的行:保留x或y列存在NA的记录
直接使用dplyr::filter()结合is.na()函数就能实现需求,核心是筛选x列是NA 或者 y列是NA的行,对应的逻辑条件是is.na(x) | is.na(y)。
完整代码示例
library(tibble, quietly = T, warn.conflicts = F) library(dplyr, quietly = T, warn.conflicts = F) df <- tribble( ~name, ~x, ~y, "id_1", 1, NA, "id_2", 3, NA, "id_3", NA, 29, "id_4", -99, 0, "id_5", -98, 28, ) %>% mutate(name = factor(name)) # 执行筛选 filtered_df <- df %>% filter(is.na(x) | is.na(y)) filtered_df #> # A tibble: 3 x 3 #> name x y #> <fct> <dbl> <dbl> #> 1 id_1 1 NA #> 2 id_2 3 NA #> 3 id_3 NA 29
补充说明
如果之前使用filter失败,大概率是逻辑条件写反了——比如误写为!is.na(x) | !is.na(y)(这会保留所有行,因为所有行至少有一列非NA),或者错误使用了&(逻辑与)而非|(逻辑或)。
这个方法基于条件筛选,完全不需要依赖行号,适合大规模数据集处理。
内容的提问来源于stack exchange,提问作者maRvin
相关产品推荐
相关产品推荐

