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

如何删除指定连续列中含至少5个NA的DataFrame行?

筛选DataFrame:删除指定连续列中NA数量达标的行

原始数据示例

df <- data.frame(
  dep_delay = c(3, 42, -1, 33),
  temp = c(68.00, NA, NA, NA),
  humid = c(53.06, 64.93, NA, NA),
  wind_dir = c(NA, 360, NA, NA),
  precip = c(0, 0, NA, NA),
  pressure = c(1020.8, NA, NA, NA),
  date = c("2013-05-07", "2013-03-07", "2013-12-31", "2013-12-31"),
  row.names = c(16983, 26477, 29299, 29300)
)

需求说明

仅删除temp到pressure这5列中至少包含5个NA的行(如示例中的29299、29300行),保留其余行(如16983、26477行)。

解决方案

方法1:基础R实现

先定位目标列的索引范围,再统计每行的NA数量,最后筛选符合条件的行:

# 确定temp到pressure的列索引区间
target_cols <- which(names(df) == "temp"):which(names(df) == "pressure")

# 计算每行在目标列的NA数量,保留NA数<5的行
df_filtered <- df[rowSums(is.na(df[, target_cols])) < 5, ]

方法2:tidyverse(dplyr)实现

如果习惯使用tidyverse语法,代码更简洁:

library(dplyr)

df_filtered <- df %>%
  filter(rowSums(is.na(across(temp:pressure))) < 5)

筛选结果

运行上述代码后,得到的结果如下:

print(df_filtered)
#       dep_delay temp humid wind_dir precip pressure       date
# 16983         3 68.0 53.06       NA      0   1020.8 2013-05-07
# 26477        42   NA 64.93      360      0       NA 2013-03-07

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:40:41