2016-07-12 3 views
0

Я пытаюсь использовать блестящий, чтобы создать гистограмму для состояния, которое выбирается с помощью раскрывающегося списка. Я новичок в R, и я попробовал множество примеров безрезультатно. У меня есть три переменные (состояние, претензия #, общая сумма $), а для каждого состояния - пять значений. Так что-то вроде этого:Используйте Shiny для отображения гистограммы по состоянию

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

Я хочу иметь что-то похожее на https://beta.rstudioconnect.com/jjallaire/shiny-embedding/#inline-app, но я не знаю, могу ли я форматировать данные в том, что было, так как я много САМ.

ответ

1

Вы имеете в виду что-то вроде этого (вы можете скачать и запустить пример)?

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) 

То, что мы делаем, принимая список уникальных состояний, доступных в нашем кадре данных и передачи их к подходящему selectInput, что делает в раскрывающемся списке в пользовательском интерфейсе. Отсюда мы можем получить доступ к любому значению, которое пользователь выбрал через объект input$state. В более общем плане мы можем получить доступ к входам на основе того, что мы определяем как inputId (в данном конкретном случае мы называем это state).

После взятия пользовательского ввода мы можем подмножить фрейм данных только для того, чтобы возвращать значения, которые соответствуют определенному пользователем состоянию, и в этом случае передавать эти значения итогов в график, который мы выводим как результат.

Смежные вопросы