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

R语言如何对多列数据应用gtExtras::gt_sparkline生成迷你图

解决方案

你可以直接按行提取年月列数据生成列表列,无需额外转换长表,代码如下:

基础版(无新增value列)

library(gt)
library(gtExtras)
library(dplyr)

# 构建你的原始数据
df <- structure(list(type = c("v1", "v2"), `2017-06` = c(244.955, 9e-04), 
                     `2017-07` = c(244.786, -7e-04), `2017-08` = c(245.519, 0.003), 
                     `2017-09` = c(246.819, 0.0053), `2017-10` = c(246.663, -6e-04)), 
                class = "data.frame", row.names = c(NA, -2L))

# 生成带sparkline的gt表格
df %>%
  # 指定按type分组,保留该列为维度
  rowwise(type) %>%
  # 将该行所有年月列数据合并为列表
  summarise(mpg_data = list(c_across(everything())), .groups = "drop") %>%
  gt() %>%
  gt_sparkline(mpg_data)

升级版(含新增value列)

仅需要在按行处理时保留value列作为维度,排除在sparkline数据源外即可:

# 构建新增value列后的更新数据
df_new <- structure(list(type = c("v1", "v2"), `2017-06` = c(244.955, 9e-04), 
                         `2017-07` = c(244.786, -7e-04), `2017-08` = c(245.519, 0.003), 
                         `2017-09` = c(246.819, 0.0053), `2017-10` = c(246.663, -6e-04), 
                         value = c(1.2, 1.6)), 
                    class = "data.frame", row.names = c(NA, -2L))

df_new %>%
  # 保留type和value两个维度列
  rowwise(type, value) %>%
  # 排除value列,仅将年月列数据合并为列表
  summarise(mpg_data = list(c_across(-value)), .groups = "drop") %>%
  gt() %>%
  gt_sparkline(mpg_data)

如果你习惯用原有的melt长表转换写法,仅需要修改melt的id参数,将不需要参与融合的value列加入即可:

library(reshape2)
data <- melt(df_new, id = c('type','value'))
data %>%
  dplyr::group_by(type, value) %>%
  dplyr::summarize(values = list(value), .groups = "drop") %>%
  gt() %>%
  gt_sparkline(values)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:57:01