1

基于sparkline来自此链接的示例代码:

library(gt)
library(gtExtras)
mtcars %>%
    dplyr::group_by(cyl) %>%
    # must end up with list of data for each row in the input dataframe
    dplyr::summarize(mpg_data = list(mpg), .groups = "drop") %>%
    gt() %>%
    gt_sparkline(mpg_data)

出去:

在此处输入图像描述

现在我希望将上面的代码应用于df下面的数据,这意味着使用typeas cyl,其他年月列 as mpg-data

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))

在此处输入图像描述

我怎么能做到这一点?谢谢。

编辑:

data <- melt(df, id = 'type')
data %>%
    dplyr::group_by(type) %>%
    # must end up with list of data for each row in the input dataframe
    dplyr::summarize(values = list(value), .groups = "drop") %>%
    gt() %>%
    gt_sparkline(values)

出去:

在此处输入图像描述

通过添加value列编辑数据:

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))
4

2 回答 2

1

您可以使用rowwise和折叠列表中该行的所有数据。

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

df %>%
  rowwise() %>%
  mutate(data = list(c_across(-type))) %>%
  select(type, data) %>%
  gt() %>%
  gt_sparkline(data)

在此处输入图像描述

于 2021-10-18T06:23:26.273 回答
1

我们可以pmap使用purrr

library(gt)
library(gtExtras)
library(dplyr)
library(purrr)
df %>%
   transmute(type, data = pmap(across(-type), list)) %>%
   gt() %>%
   gt_sparkline(data)

输出:

在此处输入图像描述

于 2021-10-18T18:43:12.370 回答