--- title: "Using tidyHtmlTable" author: "Stephen Gragg" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Using tidyHtmlTable} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- # Introduction `tidyHtmlTable` acts as a wrapper function for the `htmlTable` function allowing columns to be mapped from the input data to specific htmlTable parameters in a manner similar to ggplot2. # Some Examples ## Prepare Data We'll begin by turning the `mtcars` data into a tidy dataset. The `pivot_longer` function is called to collect 3 performance metrics into a pair of key and value columns. ```{r, message=FALSE} library(magrittr) library(tidyr) library(dplyr) library(htmlTable) library(tibble) td <- mtcars %>% as_tibble(rownames = "rnames") %>% pivot_longer(names_to = "per_metric", cols = c(hp, mpg, qsec)) ``` Now we will compute 4 summary statistics for each of the 3 performance metrics. This will be further grouped by number of cylinders and gears. ```{r} tidy_summary <- td %>% group_by(cyl, gear, per_metric) %>% summarise(Mean = round(mean(value), 1), SD = round(sd(value), 1), Min = round(min(value), 1), Max = round(max(value), 1), .groups = 'drop') %>% pivot_longer(names_to = "summary_stat", cols = c(Mean, SD, Min, Max)) %>% ungroup() %>% mutate(gear = paste(gear, "Gears"), cyl = paste(cyl, "Cylinders")) ``` At this point, we are ready to implement the `htmlTable` function. Essentially, this constructs an html table using arguments similar to the `htmlTable` function. However, whereas `htmlTable` required the user to manually arrange the data and specify the column groups, headers, row names, row-groups, etc., each of these components of the table is mapped to a column within the input data. ## Output html table ### Example 1 ```{r, warning=FALSE} tidy_summary %>% arrange(per_metric, summary_stat) %>% addHtmlTableStyle(align = "r") %>% tidyHtmlTable(header = gear, cgroup = cyl, rnames = summary_stat, rgroup = per_metric) ``` ### Example 2 ```{r, warning=FALSE} tidy_summary %>% arrange(cyl, gear) %>% addHtmlTableStyle(align = "r") %>% tidyHtmlTable(header = summary_stat, cgroup = per_metric, rnames = gear, rgroup = cyl) ```