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

如何在flextable中以合并分组值作为表头?

用flextable实现带合并表头的分组表格

步骤1:准备数据并转成宽格式

先加载所需包,将原始数据转换为宽格式,确保列名结构清晰:

library(tidyverse)
library(flextable)

# 原始数据集
mydf <- data.frame(
  estimate = rep(c("b0", "b1", "b2"), 2),
  linear = rep(c("0.1(0.1)*", "0.1(0.1)*", ""), 2),
  quadratic = rep(c("0.1(0.1)*", "0.1(0.1)*", "0.1(0.1)*"), 2),
  zone = c(rep("A", 3), rep("B", 3))
)

# 转换为宽格式,生成带区域标识的列名
wide_df <- mydf %>%
  pivot_wider(
    names_from = zone,
    values_from = c(linear, quadratic),
    names_glue = "{.value}_{zone}"
  )

步骤2:创建带合并表头的flextable

通过add_header_row添加顶层合并表头,用colwidths指定每个表头对应的列数,实现区域A、B的表头合并:

# 初始化flextable
ft <- flextable(wide_df)

# 配置双层表头
ft <- ft %>%
  # 添加顶层合并表头:参数列占1列,区域A、B各占2列
  add_header_row(
    values = c("参数", "区域A", "区域B"),
    colwidths = c(1, 2, 2)
  ) %>%
  # 修改第二层表头的显示文本
  set_header_labels(
    estimate = "参数",
    linear_A = "linear",
    quadratic_A = "quadratic",
    linear_B = "linear",
    quadratic_B = "quadratic"
  ) %>%
  # 可选:调整样式,居中对齐+booktabs主题
  align(align = "center", part = "all") %>%
  theme_booktabs()

# 查看结果
ft

效果说明

最终表格会呈现双层表头:顶层是合并后的"区域A"和"区域B",每个区域下分别显示"linear"和"quadratic"子列,对应各参数的数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 11:35:58