如何在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值对应FALSErowSums(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
相关产品推荐
相关产品推荐

