You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rowwise()处理整行数据:如何识别全为NA值的观测行?

全NA行识别的tidy风格解决方案

以下两种方案均不需要硬编码列名,可适配任意列数、任意列名的数据集:

方法1:使用if_all()(推荐,最简洁)

dplyr 1.0.0及以上版本提供的if_all()函数可以直接按行判断选中的所有列是否都满足条件,是目前最优的实现方式:

  • 标记全NA行
frm %>%
  # 新增列标记当前行是否所有列都是NA
  mutate(all_values_missing = if_all(everything(), is.na))
  • 直接筛选出全NA的行
frm %>%
  filter(if_all(everything(), is.na))

如果不需要检查全部列,只需要把everything()替换为对应的tidyselect选择规则即可,比如要排除名为id的列,可以写成everything() - id。

方法2:使用rowwise() + c_across()(兼容旧版dplyr)

如果是低于1.0.0版本的dplyr,可以用c_across()按行合并选中列后判断:

frm %>%
  rowwise() %>%
  mutate(all_values_missing = all(is.na(c_across(everything())))) %>%
  ungroup() # 处理完成后取消行分组,避免影响后续操作

两种方案在示例数据集上运行,都会正确识别第四行是唯一全为NA的行。

内容的提问来源于stack exchange,提问作者John Posner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:15:03