library(shiny) library(dplyr) library(ggplot2) library(readr) library(DT) library(shinythemes)
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”)) ) ) ) )
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]])
}
})
}
shinyApp(ui = ui, server = server)