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

在R语言中删除数据框中包含1个以上NA值的列

解决方案

基础R实现

直接通过计算每列的NA数量完成筛选:

# 统计每列的NA个数
na_per_col <- colSums(is.na(data))
# 保留NA个数≤1的列(ID列无NA,自动保留)
filtered_data <- data[, na_per_col <= 1]

执行后得到的结果:

ID Col1 Col3
1 Per1    1    3
2 Per2    2   NA
3 Per3   NA    5

tidyverse/dplyr实现

如果习惯用tidyverse语法,用dplyr的select()配合where()更简洁:

library(dplyr)

filtered_data <- data %>%
  select(where(~ sum(is.na(.x)) <= 1))

原理说明

  • is.na(data)会生成一个逻辑矩阵,标记出所有NA的位置
  • colSums(is.na(data))对每列的NA标记求和,得到每列的NA总数
  • 筛选条件<=1会自动排除NA数量超过1的列(即Col2和Col4),保留符合要求的列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:25:06