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

如何在R中筛选至多包含1个NA值的数据行?

筛选至多含1个NA值的行

要从mlbench::PimaIndiansDiabetes2数据集中保留**至多包含1个NA值(包括完全无NA)**的行,核心思路是计算每行的缺失值数量,再筛选符合条件的行。

完整代码实现

# 加载数据集
library(mlbench)
data(PimaIndiansDiabetes2)
df <- PimaIndiansDiabetes2

# 筛选至多含1个NA的行
filtered_df <- df[rowSums(is.na(df)) <= 1, ]

代码解释

  • is.na(df):生成和原数据结构一致的逻辑矩阵,NA值对应TRUE,非NA值对应FALSE
  • rowSums(is.na(df)):按行求和,得到每行的NA值个数(逻辑值TRUE会被当作1计算)
  • rowSums(...) <= 1:生成逻辑向量,标记出NA数量≤1的行
  • df[逻辑向量, ]:提取符合条件的行

用你提供的示例数据测试,代码同样适用:

# 示例数据
df <- data.frame(
  Var1 = 1:6,
  Var2 = c(NA, 34, NA, NA, NA, 40),
  Var3 = c(NA, NA, NA, 55, NA, 28)
)

# 筛选后结果
filtered_df <- df[rowSums(is.na(df)) <= 1, ]
print(filtered_df)

输出结果与你期望一致:

Var1 Var2 Var3
2    2   34   NA
4    4   NA   55
6    6   40   28

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 03:36:28