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

如何统计dataframe中非零且非NA值的列计数?

问题描述

需要统计数据框每一列中非零且非NA的元素数量,数据中存在NA值,类似统计每列非零元素的需求,但需额外排除NA值。

示例数据

x <- cbind(x1 = NA, x2 = c(4:1), x3 = c(0, NA, 1, NA))

预期结果

[1] 0 4 1

解决方案

方法1:使用colSums(简洁高效)

利用colSums结合逻辑判断,通过na.rm = TRUE忽略NA值:

colSums(x != 0, na.rm = TRUE)

说明:x != 0生成布尔矩阵,NA值会被标记为NA,na.rm = TRUE会忽略这些NA,最终统计每列中TRUE的数量,即非零且非NA的元素数。

方法2:使用apply函数

逐列处理,统计符合条件的元素:

apply(x, 2, function(col) sum(col != 0, na.rm = TRUE))

说明:apply(x, 2, ...)指定对每一列执行自定义函数,函数内部通过sum统计非零且非NA的元素数量。

方法3:使用dplyr包(适配数据框操作)

如果习惯dplyr的管道风格:

library(dplyr)

as.data.frame(x) %>%
  summarise(across(everything(), ~ sum(.x != 0, na.rm = TRUE)))

输出为数据框格式,若需要转为向量,可追加%>% unlist()或%>% pull()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:14:53