Load necessary libraries

library(shiny) library(dplyr) library(ggplot2) library(readr) library(DT) library(shinythemes)

Define UI for application

ui <- fluidPage( theme = shinytheme(“cerulean”), titlePanel(“Differential and Inferential Statistical Analysis”), sidebarLayout( sidebarPanel( fileInput(“file”, “Choose CSV File”, accept = c(“text/csv”, “text/comma-separated-values,text/plain”, “.csv”)), uiOutput(“var_select”), uiOutput(“var_select2”), actionButton(“analyze”, “Analyze”) ), mainPanel( tabsetPanel( tabPanel(“Summary”, verbatimTextOutput(“summary”)), tabPanel(“Data Table”, DTOutput(“dataTable”)), tabPanel(“Plot”, plotOutput(“plot”)), tabPanel(“Inferential Stats”, verbatimTextOutput(“inferential”)) ) ) ) )

Define server logic

server <- function(input, output, session) { data <- reactive({ req(input\(file) read_csv(input\)file$datapath) })

output$var_select <- renderUI({
    req(data())
    selectInput("variable", "Select a Variable:", names(data()))
})

output$var_select2 <- renderUI({
    req(data())
    selectInput("variable2", "Select a Second Variable (optional):", c("", names(data())))
})

output$summary <- renderPrint({
    req(input$analyze)
    req(data())
    summary(data()[[input$variable]])
})

output$dataTable <- renderDT({
    req(data())
    datatable(data())
})

output$plot <- renderPlot({
    req(input$analyze)
    req(data())
    
    var <- input$variable
    var2 <- input$variable2
    
    if (var2 == "") {
        ggplot(data(), aes_string(x = var)) +
            geom_histogram(binwidth = 10, fill = "blue", color = "black") +
            labs(title = paste("Distribution of", var), x = var, y = "Frequency") +
            theme_minimal()
    } else {
        ggplot(data(), aes_string(x = var, y = var2)) +
            geom_point(color = "blue") +
            labs(title = paste("Scatter Plot of", var, "vs", var2), x = var, y = var2) +
            theme_minimal()
    }
})

output$inferential <- renderPrint({
    req(input$analyze)
    req(data())
    
    var <- data()[[input$variable]]
    var2 <- input$variable2
    
    if (var2 == "") {
        t.test(var, mu = mean(var, na.rm = TRUE))
    } else {
        t.test(var ~ data()[[var2]])
    }
})

}

Run the application

shinyApp(ui = ui, server = server)