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

R语言如何统计非全空列数量?含稀疏NA的列需纳入统计

解决方案

Base R 实现

核心逻辑为逐列判断是否所有值均为NA,再统计非全NA列的数量:

# 方法1:用colSums实现,运行效率更高
sum(colSums(!is.na(df)) > 0)

# 方法2:用apply逐列判断,可读性更强
sum(!apply(df, 2, function(x) all(is.na(x))))

以上两种写法对data.frame和矩阵类型都通用,运行后即可得到结果3。

Tidyverse 实现

使用dplyr的条件筛选语法实现:

library(dplyr)

# 写法1 管道流形式
df %>% 
  select(where(~!all(is.na(.x)))) %>% 
  ncol()

# 写法2 嵌套形式
ncol(select(df, where(\(x) !all(is.na(x)))))

如果需要保留非全空列的原始数据,去掉末尾的ncol()即可直接得到筛选后的数据集。

测试验证

你提供的示例数据构造代码如下,可直接运行验证结果:

df <- data.frame(
  A = c(1, 43, 85, 4),
  B = c(4, 3, NA, 2),
  C = c(5, NA, 43, NA),
  D = rep(NA_real_, 4)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:15:03