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

在R Dataframe中添加分组子标题并导出带主题的Excel文件

解决方案

你的代码问题在于只是给每行添加了分组标记列,没有把分组标题作为独立行插入到对应组的上方。以下是实现需求的完整代码:

1. 加载依赖包

library(dplyr)
library(openxlsx)

2. 构造目标数据框

# 按Group分组,为每个组插入标题行
df_final <- df %>%
  group_by(Group) %>%
  group_modify(function(data, group_info) {
    # 创建分组标题行
    header_row <- tibble(
      Parameter = paste0("Group ", group_info$Group),
      Number = NA,
      HC = NA,
      Percentage = NA
    )
    # 合并标题行和当前组数据,移除Group列
    bind_rows(header_row, select(data, -Group))
  }) %>%
  ungroup() %>%
  # 将NA替换为空白(或按需替换为"-")
  mutate(across(c(Number, HC, Percentage), ~ifelse(is.na(.), "", .)))

3. 导出带主题的Excel文件

# 创建工作簿并设置主题
wb <- createWorkbook()
addWorksheet(wb, sheetName = "分组数据")

# 设置Excel内置主题,可选值包括"Office Theme"、"Apex"、"Aspect"等
setTheme(wb, theme = "Office Theme")

# 定义分组标题的格式(加粗、居中)
header_style <- createStyle(textDecoration = "bold", halign = "center")

# 写入数据,表头设置加粗样式
writeData(wb, sheet = "分组数据", x = df_final, headerStyle = createStyle(textDecoration = "bold"))

# 为所有分组标题行应用格式
header_rows <- which(grepl("^Group ", df_final$Parameter))
addStyle(wb, sheet = "分组数据", style = header_style, rows = header_rows, cols = 1:4, gridExpand = TRUE)

# 保存Excel文件
saveWorkbook(wb, "分组数据.xlsx", overwrite = TRUE)

代码说明

  • group_modify 用于遍历每个分组,先插入自定义的标题行,再拼接原数据行,实现分组标题前置的效果
  • 用mutate(across(...)) 将空值替换为空白,匹配你期望的表格样式
  • setTheme 快速为Excel设置内置主题,提升文档美观度
  • 额外添加分组标题的格式设置,让标题更醒目易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:43:29