How to Filter Data in a Shiny App: A Step-by-Step Guide for Choosing the Correct Input Value
The bug in the code is that when selectInput("selectInput1", "select Name:", choices = unique(jumps2$Name)) is run, it doesn’t actually filter by the selected name because the choice list is filtered after the value is chosen. To fix this issue, we need to use valuechosen instead of just input$selectInput1. Here’s how you can do it:
library(shiny)
library(ggplot2)
# Define UI
ui <- fluidPage(
# Add title
titlePanel("K-Means Clustering Example"),
# Sidebar with input control
sidebarLayout(
sidebarPanel(
selectInput("selectInput1", "select Name:", choices = unique(jumps2$Name))
),
# Main plot area
mainPanel(
plotOutput("plot")
)
)
)
# Define server logic
server <- function(input, output) {
# Filter data based on selected name
filtered_data <- reactive({
jumps2[jumps2$Name == input$selectInput1, ]
})
# Plot data
output$plot <- renderPlot({
filtered_data() %>%
ggplot(aes(x = Date, y = Av.Jump)) +
geom_line()
})
}
# Run the application
shinyApp(ui = ui, server = server)
This code creates a Shiny app with a select box that filters data based on the selected name. The filtered data is then plotted using ggplot2.
Last modified on 2024-05-31