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

在R语言中按条件为flextable表格数据设置颜色

基于均值的flextable单元格文字颜色格式化方案

给定数据集

以下是你提供的两个R数据集:

grades <- structure(list(Grade = c("9th Grade (Freshman)", "10th Grade (Sophomore)", 
"11th Grade (Junior)", "12th Grade (Senior)"), Read = c(13.2, 
10, 8.1, 8.8), Calculate = c(15.4, 17.4, 5.3, 190), Draw = c(9, 
7.9, 3.3, 50), Write = c(21.2, 44.5, 31, 19.5)), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -4L))

mean_grades <- structure(list(`Total USA` = "Mean", Read = 10.025, Calculate = 57.025, 
    Draw = 17.55, Write = 29.05), class = c("tbl_df", "tbl", 
"data.frame"), row.names = c(NA, -1L))

需求说明

将grades数据集中的数值型列(Read、Calculate、Draw、Write)与mean_grades对应列的均值做比较:

  • 小于对应均值的单元格文字设为红色
  • 大于对应均值的单元格文字设为绿色
    最终以flextable格式呈现表格,同时可将均值行合并到表格中。

完整实现代码

library(flextable)
library(dplyr)

# 提取均值向量(排除非数值列)
mean_vals <- unlist(mean_grades[, -1])

# 创建flextable并设置条件颜色
ft <- flextable(grades) %>%
  # 为Read列设置颜色
  color(i = Read < mean_vals["Read"], j = "Read", color = "red") %>%
  color(i = Read > mean_vals["Read"], j = "Read", color = "green") %>%
  # 为Calculate列设置颜色
  color(i = Calculate < mean_vals["Calculate"], j = "Calculate", color = "red") %>%
  color(i = Calculate > mean_vals["Calculate"], j = "Calculate", color = "green") %>%
  # 为Draw列设置颜色
  color(i = Draw < mean_vals["Draw"], j = "Draw", color = "red") %>%
  color(i = Draw > mean_vals["Draw"], j = "Draw", color = "green") %>%
  # 为Write列设置颜色
  color(i = Write < mean_vals["Write"], j = "Write", color = "red") %>%
  color(i = Write > mean_vals["Write"], j = "Write", color = "green") %>%
  # 添加均值行到表格底部
  add_row(values = c("Mean", mean_vals), top = FALSE) %>%
  # 自动调整列宽
  autofit()

# 查看结果
ft

代码说明

  • mean_vals:提取mean_grades中的数值型均值,方便后续逐列调用比较
  • color()函数:通过i参数指定行条件(数值与均值的大小关系),j参数指定目标列,设置对应文字颜色
  • add_row():将均值行添加到表格底部,使数据对比更直观
  • autofit():自动调整表格列宽,优化显示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:03:09