2016-07-12 12 views
0

Ich versuche, glänzend zu verwenden, um ein Balkendiagramm für einen Status zu erstellen, der über Dropdown-Box ausgewählt wird. Ich bin ziemlich neu in R und habe eine Reihe von Beispielen versucht, ohne Erfolg. Ich habe drei Variablen (Staat, Anspruch #, Gesamt $) und für jeden Staat gibt es fünf Werte. So etwas wie folgt aus:Verwenden Sie Shiny, um Balkendiagramm nach Status anzuzeigen

state <- c("PA", "TX", "NY") 
claim_num <- c(1:15) 
total <- sample(1000:5000, 15) 
df <- (state, claim_num, total) 

Ich möchte etwas ähnliches wie https://beta.rstudioconnect.com/jjallaire/shiny-embedding/#inline-app haben, aber ich weiß nicht, ob ich meine Daten formatiert werden kann, dass war, da ich viel NAs haben würde.

Antwort

1

Meinst du sowas (du kannst das Beispiel herunterladen und ausführen)?

library(shiny) 

ui <- shinyUI(
    fluidPage(
    titlePanel("Sample Shiny App"),  
    sidebarLayout(
     sidebarPanel(
     uiOutput("stateInput") 
    ), 
     mainPanel(
     plotOutput("statePlot") 
    ) 
    ) 
)) 

server <- shinyServer(function(input, output) { 
    state <- sample(state.abb, 3, replace = FALSE) 
    total <- sample(1000:5000, 15) 
    claimNumber <- 1:15 
    data <- data.frame(state, total, claimNumber) 

    output$stateInput <- renderUI({ 
    selectInput(
     inputId = "state", 
     label = "Select a State:", 
     choices = levels(data$state) 
    ) 
    }) 

    output$statePlot <- renderPlot({ 
    hist(data$total[data$state == input$state]) 
    }) 
}) 

shinyApp(ui = ui, server = server) 

Was wir tun, ist die Liste der eindeutigen Zustände in unserem Datenrahmen zu nehmen und diejenigen unsere selectInput vorbei, die in der Benutzeroberfläche als Dropdown machen. Von hier aus können wir auf den Wert zugreifen, den der Benutzer über das Objekt input$state ausgewählt hat. Allgemeiner können wir auf Eingaben zugreifen, die auf dem basieren, was wir definieren, inputId (in diesem speziellen Fall nennen wir es state).

Nachdem wir die Benutzereingabe erfasst haben, können wir den Datenrahmen so unterteilen, dass nur Werte zurückgegeben werden, die dem benutzerdefinierten Zustand entsprechen, und in diesem Fall diese Summenwerte an ein Diagramm übergeben, das wir als Ausgabe rendern.