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

如何生成可发表级别的分组描述统计HTML表格?

解决方案

下面提供三种实用方法,帮你生成符合期刊格式的分组描述统计表格并导出为HTML:

方法一:用gtsummary包(推荐,快速生成专业表格)

gtsummary包专门用于生成发表级统计表格,支持分组描述,导出HTML也很方便:

# 加载所需包
library(gtsummary)
library(mtcars)

# 将am变量转为因子(方便显示分组名称)
mtcars$am <- factor(mtcars$am, levels = c(0,1), labels = c("自动档", "手动档"))

# 生成分组描述统计表格
tbl <- mtcars %>%
  select(mpg, hp, wt, qsec, am) %>% # 指定要分析的变量和分组变量
  tbl_summary(
    by = am, # 按am分组
    statistic = list(
      all_continuous() ~ "{mean} ± {sd} ({median})" # 定义连续变量的统计量格式,可按需调整
    ),
    label = list(
      mpg ~ "Miles/(US) gallon",
      hp ~ "Gross horsepower",
      wt ~ "Weight (1000 lbs)",
      qsec ~ "1/4 mile time"
    ) # 设置变量的显示名称
  ) %>%
  add_n() # 添加每组样本量

# 导出为HTML文件
tbl %>% as_gt() %>% gt::gtsave("分组描述统计.html")

方法二:手动整理psych::describeBy结果,再用stargazer输出

如果坚持用stargazer,可以先把describeBy的结果整理成适合stargazer的格式:

library(psych)
library(stargazer)
library(mtcars)

# 按am分组计算描述统计
desc_result <- describeBy(mtcars[, c("mpg", "hp", "wt", "qsec")], group = mtcars$am, mat = TRUE)

# 提取需要的统计量(这里取n、均值、标准差、中位数)
stats_table <- data.frame(
  Variable = rep(c("Miles/(US) gallon", "Gross horsepower", "Weight (1000 lbs)", "1/4 mile time"), 2),
  Group = rep(c("自动档", "手动档"), each = 4),
  N = desc_result$n,
  Mean = round(desc_result$mean, 2),
  SD = round(desc_result$sd, 2),
  Median = round(desc_result$median, 2)
)

# 转换为宽格式(适合stargazer输出)
wide_table <- reshape(stats_table, idvar = "Variable", timevar = "Group", direction = "wide")
colnames(wide_table) <- gsub("\\.", " ", colnames(wide_table))

# 用stargazer生成HTML表格
stargazer(wide_table, 
          type = "html", 
          out = "分组描述统计_stargazer.html",
          title = "自动档与手动档车辆的描述统计",
          align = TRUE,
          digits = 2)

方法三:使用tableone包

tableone是医学/统计领域常用的发表级表格生成工具:

library(tableone)
library(mtcars)

# 转换am为因子
mtcars$am <- factor(mtcars$am, levels = c(0,1), labels = c("自动档", "手动档"))

# 指定变量列表
vars <- c("mpg", "hp", "wt", "qsec")
# 设置变量标签
varLabels <- list(
  mpg = "Miles/(US) gallon",
  hp = "Gross horsepower",
  wt = "Weight (1000 lbs)",
  qsec = "1/4 mile time"
)

# 创建TableOne对象
tab1 <- CreateTableOne(vars = vars, strata = "am", data = mtcars, varLabels = varLabels)

# 导出为HTML
print(tab1, quote = FALSE, noSpaces = TRUE, printToggle = FALSE) %>%
  writeLines("分组描述统计_tableone.html")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:27