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

R data.table按列统计唯一值出现次数避免循环复用的实现方案

R data.table 多列唯一值计数解决方案

你原有写法的问题在于data.table的j位置返回不同行数的对象时,会自动触发循环补齐规则,才会出现结果失真和警告,以下是两种需求的实现代码:


方案2(优先推荐:长格式data.table输出)

library(data.table)
# 测试数据
dt <- data.table(a=c(1,1,2,3,7),b=c(4,5,6,4,4))
# 核心统计代码
dt_final <- melt(dt, measure.vars = names(dt))[, .N, keyby = .(column = variable, agg = value)]
# 可选:调整列顺序和示例完全匹配
setcolorder(dt_final, c("agg", "N", "column"))

运行输出结果:

> dt_final
   agg N column
1:  1 2      a
2:  2 1      a
3:  3 1      a
4:  7 1      a
5:  4 3      b
6:  5 1      b
7:  6 1      b

方案1(列表输出)

newlist <- unlist(lapply(names(dt), function(col) {
  col_stats <- dt[, .N, by = get(col)]
  setNames(list(col_stats[[1]], col_stats[[2]]), paste0(col, c(".agg", ".N")))
}), recursive = FALSE)

运行输出结果:

> newlist
$a.agg
[1] 1 2 3 7

$a.N
[1] 2 1 1 1

$b.agg
[1] 4 5 6

$b.N
[1] 3 1 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:04