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

R语言使用data.table按年份分组转置生成双分组列描述性统计量表

你原有代码的问题在于未按Year分组计算,也没有将多指标的统计结果转换为要求的长表结构。以下是适配需求的data.table实现,支持后续快速扩展百分位等统计指标:

library(data.table)

# 定义需要计算统计量的变量
stats_vars <- c("Length", "Weight", "Age")

# 按Year分组计算所有统计量,后续新增指标直接在下方list中添加即可
dt_stats <- dt[, lapply(.SD, function(x) list(
  N = .N,
  Min = min(x, na.rm = TRUE),
  Mean = round(mean(x, na.rm = TRUE), 2),
  Max = max(x, na.rm = TRUE),
  P99 = quantile(x, 0.99, na.rm = TRUE) # 不需要可删除,新增其他统计项直接加在这里
)), by = Year, .SDcols = stats_vars]

# 宽表转长表,匹配要求的输出结构
dt_new <- melt(dt_stats, 
               id.vars = "Year", 
               measure.vars = patterns(N = "N", Min = "Min", Mean = "Mean", Max = "Max", P99 = "P99"),
               variable.name = "Variable",
               value.name = c("Number of observations", "Min", "Mean", "Max", "P99"))

# 替换变量名、按要求排序
dt_new[, Variable := stats_vars[Variable]]
setorder(dt_new, Variable, Year)

说明

  1. 注意你原有代码中写的Width应为样例表中的Weight,替换后即可正常运行
  2. 扩展统计指标只需做两处修改:第一步的计算逻辑list里新增对应计算函数,第二步melt的measure.vars和value.name里新增对应字段即可,不需要修改其他逻辑
  3. 全程使用data.table原生语法,处理大数据量时效率远高于tidyverse系列函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:57:03