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

在R中合并gt_summary生成的三个tbl_strata汇总表的方法咨询

解决gt_summary中tbl_strata表横向合并的方法

核心思路

由于tbl_strata生成的表结构特殊,无法直接用tbl_merge合并,我们可以借助gt包的列合并功能,先对齐变量行,再将三个表的统计列横向拼接,保留统一的变量特征列。

步骤与代码

假设你已生成table_one、table_two、table_three三个tbl_strata对象:

  1. 对齐变量顺序
    确保三个表的变量行完全匹配,避免合并时错位:
table_two <- table_two %>%
  modify_table_body(~.x %>% arrange(match(variable, table_one$table_body$variable)))
table_three <- table_three %>%
  modify_table_body(~.x %>% arrange(match(variable, table_one$table_body$variable)))
  1. 拆分并合并列
    将表转为gt对象,拆分出变量列和统计列后拼接:
# 提取第一个表的变量特征列
gt_var_col <- table_one %>% as_gt() %>% cols_select(label)

# 提取三个表的统计列(跳过变量列)
gt_stats1 <- table_one %>% as_gt() %>% cols_select(-label)
gt_stats2 <- table_two %>% as_gt() %>% cols_select(-label)
gt_stats3 <- table_three %>% as_gt() %>% cols_select(-label)

# 合并所有列得到最终表
final_table <- gt_var_col %>% cols_bind(gt_stats1, gt_stats2, gt_stats3)
  1. 可选格式调整
    优化列标题和样式:
final_table <- final_table %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_column_labels()
  ) %>%
  cols_label(label = "变量特征")

备选方案:手动合并底层数据框

如果需要更精细的列控制,可以提取表的核心数据框手动合并:

# 提取每个表的核心数据,重命名统计列避免重复
df1 <- table_one$table_body %>% select(variable, label, starts_with("stat_"), p.value)
df2 <- table_two$table_body %>% select(variable, starts_with("stat_"), p.value) %>% rename_with(~paste0(., "_2"), -variable)
df3 <- table_three$table_body %>% select(variable, starts_with("stat_"), p.value) %>% rename_with(~paste0(., "_3"), -variable)

# 合并数据框
combined_df <- df1 %>%
  left_join(df2, by = "variable") %>%
  left_join(df3, by = "variable")

# 用gt构建表格并设置列标题
final_table <- combined_df %>%
  gt() %>%
  cols_label(
    label = "变量特征",
    stat_0 = table_one$header$label[1],
    stat_1 = table_one$header$label[2],
    p.value = "P值(表1)",
    stat_0_2 = table_two$header$label[1],
    stat_1_2 = table_two$header$label[2],
    p.value_2 = "P值(表2)",
    stat_0_3 = table_three$header$label[1],
    stat_1_3 = table_three$header$label[2],
    p.value_3 = "P值(表3)"
  ) %>%
  cols_hide(variable) %>%
  tab_style(style = cell_text(weight = "bold"), locations = cells_column_labels())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:38:06