如何用dplyr的filter()函数筛选指定列无缺失值的行?
使用dplyr::filter()筛选多列非空的DataFrame子集
你可以通过两种方式用dplyr::filter()实现需求:
方法1:逐个列判断
直接在filter()中对每一列使用!is.na(),用逻辑与&连接所有条件:
df %>% dplyr::filter(!is.na(col1) & !is.na(col2) & !is.na(col3))
方法2:使用across()批量处理(推荐)
如果需要筛选的列较多,用across()可以更简洁地批量检查所有目标列:
df %>% dplyr::filter(dplyr::across(c(col1, col2, col3), ~!is.na(.x)))
这里across(c(col1, col2, col3))指定要检查的列,~!is.na(.x)定义了对每一列的判断规则——要求该列的值非空,只有所有目标列都满足条件的行才会被保留。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

