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

R语言如何为表格添加表头、转换为flextable并按车型分组

完整实现方案

你需要先加载tidyverse和flextable两个依赖包,以下是可直接运行的代码:

# 加载依赖包
library(tidyverse)
library(flextable)

# 原始数据
df <- data.frame(names= c("Mazda RX4",  "Mazda RX4 Wag",    "Datsun 710",   "Hornet 4 Drive",   "Hornet Sportabout",    "Valiant",  "Duster 360",   "Merc 240D",    "Merc 230", "Merc 280", "Merc 280C",    "Merc 450SE",   "Merc 450SL",   "Merc 450SLC",  "Cadillac Fleetwood"),
                 score = c(21, 21, 22.8,   21.4,   18.7,   18.1,   14.3,   24.4,   22.8,   19.2,   17.8,   16.4,   17.3,   15.2,   10.4) )

# 1. 数据预处理:添加车型分组列、序号列
processed_df <- df %>%
  # 按车型前缀生成分组标签,可根据实际需求调整规则
  mutate(车型分组 = case_when(
    str_detect(names, "^Mazda") ~ "马自达",
    str_detect(names, "^Datsun") ~ "达特桑",
    str_detect(names, "^Hornet") ~ "霍尼特",
    str_detect(names, "^Valiant") ~ "勇士",
    str_detect(names, "^Duster") ~ "达斯特",
    str_detect(names, "^Merc") ~ "奔驰",
    str_detect(names, "^Cadillac") ~ "凯迪拉克",
    TRUE ~ "其他"
  )) %>%
  rownames_to_column("#") %>%
  rename("Car type" = names) %>%
  # 调整列顺序,把分组列放最前面
  select(车型分组, `#`, `Car type`, score)

# 2. 转换为flextable,设置表头、分组、主题
ft <- flextable(processed_df) %>%
  # 添加顶部表头:在#列上方加对应表头,可按需修改values里的文本内容
  add_header_row(
    values = c("车型分类", "序号", "车辆信息", "评分"),
    colwidths = c(1,1,1,1)
  ) %>%
  # 合并相同分组的单元格,实现分组效果
  merge_v(j = "车型分组") %>%
  # 调整分组单元格对齐方式
  valign(j = "车型分组", valign = "top") %>%
  align(j = "车型分组", align = "center", part = "all") %>%
  # 应用flextable内置主题,可替换为theme_vanilla、theme_tron等其他主题
  theme_booktabs()

# 输出查看结果
ft

实现说明

  • 表头设置:使用add_header_row而非硬插入数据行的方式添加顶部表头,你可以按需修改values参数里#列对应的表头内容。
  • 车型分组:先通过规则匹配给数据新增分组列,再用merge_v合并同分组的单元格实现分组效果,分组规则可根据你的实际分类需求调整。
  • 主题替换:直接替换代码里的theme_booktabs为你需要的flextable主题函数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 19:09:04