Starting with version 0.5.0 of qwraps2, the summary_table
method has been
extended to handle this without building a interaction column.
library(qwraps2)
options(qwraps2_markup = "markdown")
our_summary1 <-
list("Miles Per Gallon" =
list("min" = ~ min(mpg),
"max" = ~ max(mpg),
"mean (sd)" = ~ qwraps2::mean_sd(mpg)),
"Displacement" =
list("min" = ~ min(disp),
"median" = ~ median(disp),
"max" = ~ max(disp),
"mean (sd)" = ~ qwraps2::mean_sd(disp)),
"Weight (1000 lbs)" =
list("min" = ~ min(wt),
"max" = ~ max(wt),
"mean (sd)" = ~ qwraps2::mean_sd(wt)),
"Forward Gears" =
list("Three" = ~ qwraps2::n_perc0(gear == 3),
"Four" = ~ qwraps2::n_perc0(gear == 4),
"Five" = ~ qwraps2::n_perc0(gear == 5))
)
st <- summary_table(mtcars, summaries = our_summary1, by = c("vs", "gear"))
st
#>
#>
#> | |0.3 (N = 12) |1.3 (N = 3) |0.4 (N = 2) |1.4 (N = 10) |0.5 (N = 4) |1.5 (N = 1) |
#> |:----------------------|:---------------------|:---------------------|:--------------------|:---------------------|:----------------------|:------------------|
#> |**Miles Per Gallon** | | | | | | |
#> | min |10.4 |18.1 |21 |17.8 |15 |30.4 |
#> | max |19.2 |21.5 |21 |33.9 |26 |30.4 |
#> | mean (sd) |15.05 ± 2.77 |20.33 ± 1.93 |21.00 ± 0.00 |25.24 ± 5.54 |19.12 ± 5.02 |30.40 ± NA |
#> |**Displacement** | | | | | | |
#> | min |275.8 |120.1 |160 |71.1 |120.3 |95.1 |
#> | median |355 |225 |160 |114.5 |223 |95.1 |
#> | max |472 |258 |160 |167.6 |351 |95.1 |
#> | mean (sd) |357.62 ± 71.82 |201.03 ± 72.01 |160.00 ± 0.00 |115.62 ± 38.54 |229.32 ± 113.93 |95.10 ± NA |
#> |**Weight (1000 lbs)** | | | | | | |
#> | min |3.435 |2.465 |2.62 |1.615 |2.14 |1.513 |
#> | max |5.424 |3.46 |2.875 |3.44 |3.57 |1.513 |
#> | mean (sd) |4.10 ± 0.77 |3.05 ± 0.52 |2.75 ± 0.18 |2.59 ± 0.69 |2.91 ± 0.61 |1.51 ± NA |
#> |**Forward Gears** | | | | | | |
#> | Three |12 (100) |3 (100) |0 (0) |0 (0) |0 (0) |0 (0) |
#> | Four |0 (0) |0 (0) |2 (100) |10 (100) |0 (0) |0 (0) |
#> | Five |0 (0) |0 (0) |0 (0) |0 (0) |4 (100) |1 (100) |
The headers 0.3, 1.3, … are not that helpful. There are several options
for getting better headers. One option would be to get human readable
character or factor versions of vs an gear, or to modify the output from
summary_table
.
colnames(st) <-
sub("^(\\d).", "VS = \\1, ", sub("\\.(\\d)", " Gear = \\1", colnames(st) ))
st
#>
#>
#> | |VS = 0, Gear = 3 (N = 12) |VS = 1, Gear = 3 (N = 3) |VS = 0, Gear = 4 (N = 2) |VS = 1, Gear = 4 (N = 10) |VS = 0, Gear = 5 (N = 4) |VS = 1, Gear = 5 (N = 1) |
#> |:----------------------|:-------------------------|:------------------------|:------------------------|:-------------------------|:------------------------|:------------------------|
#> |**Miles Per Gallon** | | | | | | |
#> | min |10.4 |18.1 |21 |17.8 |15 |30.4 |
#> | max |19.2 |21.5 |21 |33.9 |26 |30.4 |
#> | mean (sd) |15.05 ± 2.77 |20.33 ± 1.93 |21.00 ± 0.00 |25.24 ± 5.54 |19.12 ± 5.02 |30.40 ± NA |
#> |**Displacement** | | | | | | |
#> | min |275.8 |120.1 |160 |71.1 |120.3 |95.1 |
#> | median |355 |225 |160 |114.5 |223 |95.1 |
#> | max |472 |258 |160 |167.6 |351 |95.1 |
#> | mean (sd) |357.62 ± 71.82 |201.03 ± 72.01 |160.00 ± 0.00 |115.62 ± 38.54 |229.32 ± 113.93 |95.10 ± NA |
#> |**Weight (1000 lbs)** | | | | | | |
#> | min |3.435 |2.465 |2.62 |1.615 |2.14 |1.513 |
#> | max |5.424 |3.46 |2.875 |3.44 |3.57 |1.513 |
#> | mean (sd) |4.10 ± 0.77 |3.05 ± 0.52 |2.75 ± 0.18 |2.59 ± 0.69 |2.91 ± 0.61 |1.51 ± NA |
#> |**Forward Gears** | | | | | | |
#> | Three |12 (100) |3 (100) |0 (0) |0 (0) |0 (0) |0 (0) |
#> | Four |0 (0) |0 (0) |2 (100) |10 (100) |0 (0) |0 (0) |
#> | Five |0 (0) |0 (0) |0 (0) |0 (0) |4 (100) |1 (100) |
Created on 2020-09-14 by the reprex package (v0.3.0)
devtools::session_info()
#> ─ Session info ───────────────────────────────────────────────────────────────
#> setting value
#> version R version 4.0.2 (2020-06-22)
#> os macOS Catalina 10.15.6
#> system x86_64, darwin17.0
#> ui X11
#> language (EN)
#> collate en_US.UTF-8
#> ctype en_US.UTF-8
#> tz America/Denver
#> date 2020-09-14
#>
#> ─ Packages ───────────────────────────────────────────────────────────────────
#> package * version date lib source
#> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.0)
#> backports 1.1.9 2020-08-24 [1] CRAN (R 4.0.2)
#> callr 3.4.4 2020-09-07 [1] CRAN (R 4.0.2)
#> cli 2.0.2 2020-02-28 [1] CRAN (R 4.0.0)
#> crayon 1.3.4 2017-09-16 [1] CRAN (R 4.0.0)
#> desc 1.2.0 2018-05-01 [1] CRAN (R 4.0.0)
#> devtools 2.3.1 2020-07-21 [1] CRAN (R 4.0.2)
#> digest 0.6.25 2020-02-23 [1] CRAN (R 4.0.0)
#> ellipsis 0.3.1 2020-05-15 [1] CRAN (R 4.0.0)
#> evaluate 0.14 2019-05-28 [1] CRAN (R 4.0.0)
#> fansi 0.4.1 2020-01-08 [1] CRAN (R 4.0.0)
#> fs 1.5.0 2020-07-31 [1] CRAN (R 4.0.2)
#> glue 1.4.2 2020-08-27 [1] CRAN (R 4.0.2)
#> highr 0.8 2019-03-20 [1] CRAN (R 4.0.0)
#> htmltools 0.5.0 2020-06-16 [1] CRAN (R 4.0.0)
#> knitr 1.29 2020-06-23 [1] CRAN (R 4.0.0)
#> magrittr 1.5 2014-11-22 [1] CRAN (R 4.0.0)
#> memoise 1.1.0 2017-04-21 [1] CRAN (R 4.0.0)
#> pkgbuild 1.1.0 2020-07-13 [1] CRAN (R 4.0.2)
#> pkgload 1.1.0 2020-05-29 [1] CRAN (R 4.0.0)
#> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.0)
#> processx 3.4.4 2020-09-03 [1] CRAN (R 4.0.2)
#> ps 1.3.4 2020-08-11 [1] CRAN (R 4.0.2)
#> qwraps2 * 0.5.0 2020-09-14 [1] local
#> R6 2.4.1 2019-11-12 [1] CRAN (R 4.0.0)
#> Rcpp 1.0.5 2020-07-06 [1] CRAN (R 4.0.0)
#> remotes 2.2.0 2020-07-21 [1] CRAN (R 4.0.2)
#> rlang 0.4.7 2020-07-09 [1] CRAN (R 4.0.2)
#> rmarkdown 2.3 2020-06-18 [1] CRAN (R 4.0.0)
#> rprojroot 1.3-2 2018-01-03 [1] CRAN (R 4.0.0)
#> sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 4.0.0)
#> stringi 1.5.3 2020-09-09 [1] CRAN (R 4.0.2)
#> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.0)
#> testthat 2.3.2 2020-03-02 [1] CRAN (R 4.0.0)
#> usethis 1.6.1 2020-04-29 [1] CRAN (R 4.0.0)
#> withr 2.2.0 2020-04-20 [1] CRAN (R 4.0.0)
#> xfun 0.17 2020-09-09 [1] CRAN (R 4.0.2)
#> yaml 2.2.1 2020-02-01 [1] CRAN (R 4.0.0)
#>
#> [1] /Library/Frameworks/R.framework/Versions/4.0/Resources/library