2016-06-28 5 views
0

У меня есть каркас данных3. Он имеет три столбца «Регион», «Страна» и «Рейтинг».Участок, основанный на зависимом отборе

Region<- c("Americas", "Asia Pacific","Asia Pacific", "EMEA", "EMEA") 
Country<- c("Mexico", "China","India", "Germany", "Spain") 
Rating<- c(5,3,3,2,4) 
book3<- data.frame(Region, Country, Rating) 

Я хочу добиться, когда я выбрать из раскрывающегося списка Регион «Америки», он должен показывать только Мексику и когда я выбрать Asia Pacific он должен отображать в Китае и Индии, и для региона EMEA он должен отображать Германию и Испанию.

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

Он должен быть способен генерировать сюжет, а также основываясь на колонке рейтинга

У меня есть код в ui.R и server.R пожалуйста, предложите что-то

Ui.R

library(shiny) 
ui <- fluidPage(
titlePanel("Test Dashboard "), 
sidebarLayout(
sidebarPanel(
uiOutput("data1"), ## uiOutput - gets the UI from the server 
uiOutput("data2") 
),  
mainPanel() 
)) 

server.R

library(shiny) 
shinyServer(function(input, output, session) { 
    Region<- c("Americas", "Asia Pacific","Asia Pacific", "EMEA", "EMEA") 
Country<- c("Mexico", "China","India", "Germany", "Spain") 
Rating<- c(5,3,3,2,4) 
    book3<- data.frame(Region, Country, Rating, stringsAsFactors = F) 
output$data1 <- renderUI({ 
selectInput("data1", "Select Region", choices = c(book3$Region)) 
}) 

output$data2 <- renderUI({ 

selectInput("data2", "select Country", choices = c(book3$Country)) 
}) 
}) 

ответ

0

это очень легко, и вы почти там:

library(shiny) 
test <- "http://www.score11.de" 
# Define UI for application that draws a histogram 


ui <- fluidPage(
    titlePanel("Test Dashboard "), 
    sidebarLayout(
    sidebarPanel(
     uiOutput("data1"), ## uiOutput - gets the UI from the server 
     uiOutput("data2") 
    ),  
    mainPanel(plotOutput("plot")) 
)) 


server <- shinyServer(function(input, output, session) { 
    Region<- c("Americas", "Asia Pacific","Asia Pacific", "EMEA", "EMEA") 
    Country<- c("Mexico", "China","India", "Germany", "Spain") 
    Rating<- c(5,3,3,2,4) 
    book3<- data.frame(Region, Country, Rating, stringsAsFactors = F) 
    output$data1 <- renderUI({ 
    selectInput("data1", "Select Region", choices = c(book3$Region)) 
    }) 

    output$data2 <- renderUI({ 
    selectInput("data2", "select Country", choices = book3[which(book3$Region == input$data1),]$Country) 
    }) 

    output$plot <- renderPlot({ 
    barplot(mean(book3[which(book3$Country == input$data2),]$Rating), ylim=c(0,10), xlim=c(0,2), width=0.5) 
    }) 


}) 

# Run the application 
shinyApp(ui = ui, server = server) 

Поскольку я не знаю вашего окончательного заявления, название участка зависит от столбца «Рейтинг».

+0

спасибо. Я хочу, чтобы он показывал среднюю оценку, основанную на выборе в BarPlot. Я использовал book3 $ рейтинг, используя функцию barplot, но она не строится. –

+0

Средняя оценка: У вас есть только одно наблюдение за страну? –

+0

Это работает для меня: 'barplot (book3 [which3) [book3 $ Country == input $ data2),] $ Рейтинг, ylim = c (0,10))'. –

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