在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
相关产品推荐
相关产品推荐

