R/mod_summarytable.R

Defines functions mod_summarytable_server mod_summarytable_ui

#' summarytable UI Function
#'
#' @description A shiny Module.
#'
#' @param id,input,output,session Internal parameters for {shiny}.
#'
#' @noRd 
#'
#' @importFrom shiny NS tagList 
mod_summarytable_ui <- function(id){
  ns <- NS(id)
  tagList(
    
 shiny.semantic::dropdown_input(ns('tosumvars'),
                                choices = names(dataset)[2:18],
                                default_text = 'Select Variable to summarize',
                                type = 'multiple'),
 
 shiny.semantic::dropdown_input(ns('groupvar'),
                                choices = c('Group Variable: No selection',names(dataset)[2:18]),
                                default_text = 'Select Grouping Variable',
                                value = 'Group Variable: No selection'),
 
 shiny.semantic::dropdown_input(ns('stratavar'),
                                choices = c('Strata variable: No selection',names(dataset)[2:18]),
                                default_text = 'Select Strata Variable',
                                value = 'Strata variable: No selection'),
 
    
 shiny::tableOutput(ns('summarytable'))
  )
}
    
#' summarytable Server Functions
#'
#' @noRd 
mod_summarytable_server <- function(id){
  moduleServer( id, function(input, output, session){
    ns <- session$ns
 
    
    
    
   output$summarytable <- renderTable({

     
     
     if(input[['groupvar']] == 'Group Variable: No selection' & input[['stratavar']] == 'Strata variable: No selection'){
       
       shiny::req(input[['tosumvars']])
       
       table_one <- arsenal::tableby( arsenal::formulize(x = input[['tosumvars']]),
                                      data = dataset,
                                      control = arsenal::tableby.control(
                                                  test = FALSE)
                                     )
       
       
       as.data.frame(summary(table_one,text = TRUE), text = "html") 
       
       
       
       
     } else if (input[['groupvar']] != 'Group Variable: No selection' & input[['stratavar']] == 'Strata variable: No selection'){
       shiny::req(input[['tosumvars']])
       shiny::req(input[['groupvar']])
       
       table_one <- arsenal::tableby( arsenal::formulize(y = input[['groupvar']],
                                                         x = input[['tosumvars']]),
                                      data = dataset,
                                      control = arsenal::tableby.control(
                                        test = FALSE)
       )
       
       as.data.frame(summary(table_one,text = TRUE), text = "html")  
       
       
       
       
     } else if (input[['groupvar']] == 'Group Variable: No selection' & input[['stratavar']] != 'Strata variable: No selection'){
       shiny::req(input[['tosumvars']])
       shiny::req(input[['stratavar']])
       
       table_one <- arsenal::tableby( arsenal::formulize(x = input[['tosumvars']]),
                                      strata = eval(as.name(input[['stratavar']])),
                                      data = dataset,
                                      control = arsenal::tableby.control(
                                        test = FALSE)
       )
       
       as.data.frame(summary(table_one,text = TRUE), text = "html")  
       
       
       
       
     } else if (input[['groupvar']] != 'Group Variable: No selection' & input[['stratavar']] != 'Strata variable: No selection'){
       shiny::req(input[['tosumvars']])
       shiny::req(input[['groupvar']])
       shiny::req(input[['stratavar']])
     
     table_one <- arsenal::tableby( arsenal::formulize(y = input[['groupvar']],
                                                       x = input[['tosumvars']]),
                                    data = dataset,
                                    strata = eval(as.name(input[['stratavar']])),
                                    control = arsenal::tableby.control(
                                      test = FALSE)
     )
     
     
     
     as.data.frame(summary(table_one,text = TRUE), text = "html")  
     
     }
   }, sanitize.text.function = function(x) x)
    
    
    
  })
}
    
## To be copied in the UI
# mod_summarytable_ui("summarytable_ui_1")
    
## To be copied in the server
# mod_summarytable_server("summarytable_ui_1")
gavandrewj/pdphApp documentation built on Dec. 20, 2021, 9:48 a.m.