使用 summary_row() 值来计算 {gt} 包的组百分比?

Using summary_row() values to calculate group percentage with {gt} package?

我正在尝试使用 {gt} 包中的 summary_rows() 函数计算整个组的百分比。我遇到的问题是如何创建一个函数,该函数使用 summary_rows() 值来按行计算百分比。

样本 df:

df <- tibble(
       division = c("Science", "Science", "Science"),
       department = c("Biology", "Biology", "Biology"),
       course_num = c('101', '201', "301"),
       widthraws = c(1, 2, 3),
       unsucessful = c(0, 0 , 0),
       successfull = c(1, 3, 4),
       total_enrolled = c(2, 5, 7),
       percent_successful = c(.50, .60, .57)
      )

gt 示例 table:

df %>% 
   group_by(division, department) %>% 
   gt() %>% 
   summary_rows(
     groups = TRUE,
     columns = 4:7,
     missing_text = " ",
     fns = list(
       total = ~sum(.)),
   )

我想要的是 percent_successful 列的总行数为 .57。对其他也能帮助我实现这一目标的想法持开放态度。

library(tidyverse)
library(gt)

df <- tibble(
  division = c("Science", "Science", "Science"),
  department = c("Biology", "Biology", "Biology"),
  course_num = c('101', '201', "301"),
  widthraws = c(1, 2, 3),
  unsucessful = c(0, 0 , 0),
  successfull = c(1, 3, 4),
  total_enrolled = c(2, 5, 7),
  percent_successful = c(.50, .60, .57)
)

df %>%
  group_by(division, department) %>%
  gt() %>%
  summary_rows(
    groups = TRUE,
    columns = c(widthraws:percent_successful),
    missing_text = " ",
    fns = list(
      total = ~sum(.),
      max = ~max(.),
      min = ~min(.),
      medain = ~median(.))
  )

计算外部总量的百分比并添加一层

library(gt)
library(dplyr)
total_success_perc <- with(df, round(sum(successfull)/sum(total_enrolled), 2))

df %>% 
  group_by(division, department) %>% 
  gt() %>%
  summary_rows(
    groups = TRUE,
    columns = 4:7,
    missing_text = " ",
    fns = list(
      total = ~sum(.)),
  ) %>%
  summary_rows(groups = TRUE, columns = 8, missing_text = " ", 
          fns = list(total = ~  c(total_success_perc)))

-输出