Get a list of summary row data frames from a gt_tbl
object where summary
rows were added via the summary_rows()
function. The output data frames
contain the group_id
and rowname
columns, whereby rowname
contains
descriptive stub labels for the summary rows.
extract_summary(data)
A list of data frames containing summary data.
A table object that is created using the gt()
function.
Use sp500
to create a gt table with row groups. Create summary rows
labeled as min
, max
, and avg
for every row group with summary_rows()
.
Then, extract the summary rows as a list object.
summary_extracted <-
sp500 %>%
dplyr::filter(date >= "2015-01-05" & date <="2015-01-30") %>%
dplyr::arrange(date) %>%
dplyr::mutate(week = paste0("W", strftime(date, format = "%V"))) %>%
dplyr::select(-adj_close, -volume) %>%
gt(
rowname_col = "date",
groupname_col = "week"
) %>%
summary_rows(
groups = TRUE,
columns = c(open, high, low, close),
fns = list(
min = ~min(.),
max = ~max(.),
avg = ~mean(.)
),
formatter = fmt_number,
use_seps = FALSE
) %>%
extract_summary()summary_extracted
#> $summary_df_data_list
#> $summary_df_data_list$W02
#> # A tibble: 3 x 8
#> group_id rowname date open high low close week
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 W02 min NA 2006. 2030. 1992. 2003. NA
#> 2 W02 max NA 2063. 2064. 2038. 2062. NA
#> 3 W02 avg NA 2035. 2049. 2017. 2031. NA
#>
#> $summary_df_data_list$W03
#> # A tibble: 3 x 8
#> group_id rowname date open high low close week
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 W03 min NA 1992. 2018. 1988. 1993. NA
#> 2 W03 max NA 2046. 2057. 2023. 2028. NA
#> 3 W03 avg NA 2020. 2033. 2000. 2015. NA
#>
#> $summary_df_data_list$W04
#> # A tibble: 3 x 8
#> group_id rowname date open high low close week
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 W04 min NA 2020. 2029. 2004. 2023. NA
#> 2 W04 max NA 2063. 2065. 2051. 2063. NA
#> 3 W04 avg NA 2035. 2049. 2023. 2042. NA
#>
#> $summary_df_data_list$W05
#> # A tibble: 3 x 8
#> group_id rowname date open high low close week
#> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 W05 min NA 2002. 2023. 1989. 1995. NA
#> 2 W05 max NA 2050. 2058. 2041. 2057. NA
#> 3 W05 avg NA 2030. 2039. 2009. 2021. NA
Use the summary list to make a new gt table. The key thing is to use
dplyr::bind_rows()
and then pass the tibble to gt()
.
summary_extracted %>%
unlist(recursive = FALSE) %>%
dplyr::bind_rows() %>%
gt(groupname_col = "group_id")
13-6
Other table export functions:
as_latex()
,
as_raw_html()
,
as_rtf()
,
as_word()
,
extract_cells()
,
gtsave()