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

如何基于多列缺失值筛选行?能否使用is.na()实现?

用is.na()筛选含指定数量缺失值的数据行

当然可以用is.na()实现这个需求,结合rowSums()统计每行的缺失值数量,就能精准筛选出符合条件的行。

先构造你的数据集

df <- data.frame(
  NO = 1:8,
  grade = c("A", NA, "i", "W", "e", NA, NA, NA),
  level = c("B", "A", "j", NA, "f", "A", NA, NA),
  score = c("C", NA, NA, NA, "g", NA, NA, NA),
  class = c("D", NA, NA, NA, "h", "S", NA, "B"),
  stringsAsFactors = FALSE
)

筛选包含3个NA的行

通过rowSums(is.na(df[-1]))统计每行(排除序号列NO)的缺失值数量,筛选数量等于3的行:

df_3na <- df[rowSums(is.na(df[-1])) == 3, ]
df_3na

结果:

NOgradelevelscoreclass
2NAANANA
4WNANANA
8NANANAB

筛选包含2个NA的行

同理,统计缺失值数量等于2的行:

df_2na <- df[rowSums(is.na(df[-1])) == 2, ]
df_2na

结果:

NOgradelevelscoreclass
3ijNANA
6NAANAS

补充说明

  • 如果需要统计所有列(包括NO)的缺失值数量,直接使用rowSums(is.na(df))即可,这里NO列无缺失值,结果和上述一致。
  • is.na()会将每个元素转换为布尔值(缺失值为TRUE,非缺失为FALSE),rowSums()会把TRUE视为1、FALSE视为0,从而快速计算每行的缺失值总数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:39:40