R/tabyl_3way_long.R

Defines functions tabyl_3way_long

Documented in tabyl_3way_long

#' tabyl_3way_long
#'
#' @param tabyl
#' @param var3
#'
#' @return
#' @export
#'
#' @examples
tabyl_3way_long <- function(tabyl, var3){

  var1_name = rlang::sym(attributes(tabyl[[1]])$var_names$`row`)
  var2_name = rlang::sym(attributes(tabyl[[1]])$var_names$`col`)
  var3_name = rlang::sym(var3)

  tabyl %>%
    dplyr::bind_rows(.id = var3) %>%
    tidyr::gather(!!var2_name, n, names(tabyl[[1]])[2]:last(names(tabyl[[1]]))) %>%
    dplyr::group_by(!!var3_name, !!var1_name) %>%
    dplyr::mutate(total = sum(n)) %>%
    dplyr::ungroup() %>%
    dplyr::mutate(pct = round(n / total, digits = 3)) %>%
    dplyr::select(-total) %>%
    dplyr::arrange(!!var3_name, !!var1_name)
}
dpashouwer/dpash documentation built on March 21, 2022, 4:29 p.m.