如何为tibble添加列标记每行是否无任何NA值
给含NA值的tibble添加行完整性标记列
需求:给tibble新增一列,规则为:
- 整行所有列均无NA时,取值为
TRUE - 行内任意一列含NA时,取值为
FALSE
示例数据
library(tibble) tbl <- tibble( x1 = c(1, 0, NA, 0, NA), x2 = c(1, NA, NA, 0, 0), x3 = c(1, 0, 0, 0, 1) ) # 期望结果 tbl_desired <- tibble( x1 = c(1, 0, NA, 0, NA), x2 = c(1, NA, NA, 0, 0), x3 = c(1, 0, 0, 0, 1), z = c(TRUE, FALSE, FALSE, TRUE, FALSE) )
解决方案
方法1:tidyverse/dplyr 方案(推荐)
利用dplyr的if_all函数高效处理,适合大型数据集:
library(dplyr) tbl <- tbl %>% mutate(z = if_all(everything(), ~ !is.na(.x)))
方法2:基础R 轻量方案
使用基础R内置的complete.cases函数,无需额外加载包:
tbl$z <- complete.cases(tbl)
说明
if_all(everything(), ~ !is.na(.x)):选中所有列,检查每一行的所有列是否均为非NA值,返回对应逻辑结果complete.cases(tbl):直接生成标记行完整性的逻辑向量,是基础R中处理此类需求的专用工具
内容的提问来源于stack exchange,提问作者SiH
相关产品推荐
相关产品推荐

