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

如何在data.table中按组计数时统计指定列的非NA观测值?

用data.table按组统计指定列的非NA观测数

直接把你原来用的.N换成sum(!is.na(D))就行,这是最直接高效的写法:

先构造示例数据:

library(data.table)
dt <- data.table(
  cat = c("X", "X", "Y", "Y"),
  D = c(1, 2, 3, NA)
)

执行分组统计:

dt[, .(observations = sum(!is.na(D))), by = cat]

运行结果里,cat Y组的observations就是1,完全符合你的需求。

原理很简单:!is.na(D)会把D列里的非NA值转换成逻辑值TRUE(对应数值1),NA转换成FALSE(对应数值0),用sum求和就得到了每组里D列非NA的有效观测数。

如果你偏好另一种写法,也可以先过滤NA再统计,结果一致但效率稍低:

dt[!is.na(D), .(observations = .N), by = cat]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:05:22