Как отфильтровать дату (год) в блестящем на основе выбора sliderInput? - PullRequest
0 голосов
/ 09 января 2019

Я работаю с блестящим и внутри моего файла ui.R есть sliderInput () и selectInput (). Я хотел бы, чтобы на основе выбора пользователем этих обоих полей отображались выбранные данные в функции hchart. Я очень близок к решению проблемы, но с моим кодом, он просто фильтрует первое число и последнее число года, а не все между. Я попытался с функцией между, но это не сработало.

Это мой код ui.R:

  tabItem(tabName = "crimetypesbyyear",

          fluidRow(

            box(
              title = "Date", 
              status = "primary", 
              solidHeader = TRUE,
              width = 6,
              sliderInput("ctypeDate", label = "Select Year", min = 2001, max = 2016, step = 1, sep = '', value = c(2001,2016))
            ),

            box(
              title = "Crime Type", 
              status = "primary", 
              solidHeader = TRUE,
              width = 6,
              height = 162,
              selectInput("ctypeCrimeType", label= "Select Crime Type", choices = unique(cc$Primary.Type)) 
            ),

            box(
              title = "Plot", 
              status = "danger", 
              solidHeader = TRUE,
              width = 12,
              highchartOutput(outputId = "ctypeOutput")
            ),

А это мой сервер. Код:

output$ctypeOutput <- renderHighchart({

ctypeAnalysis <- cc[cc$Primary.Type == input$ctypeCrimeType,] %>% group_by(Year2) %>% summarise(Total = n()) %>% filter(Year2 %in% cbind(input$ctypeDate[1],input$ctypeDate[2]))

hchart(ctypeAnalysis %>% na.omit(), "column", hcaes(x = Year2, y = Total, color = Total)) %>%
hc_exporting(enabled = TRUE, filename = paste(input$ctypeCrimeType, "by_Year", sep = "_")) %>%
hc_title(text = paste("Crime Type by Year",input$ctypeCrimeType, sep = ": ")) %>%
hc_subtitle(text = "(2001 - 2016)") %>%
hc_xAxis(title = list(text = "Year")) %>%
hc_yAxis(title = list(text = "Crimes")) %>%
hc_colorAxis(stops = color_stops(n = 10, colors = c("#d98880", "#85c1e9", "#82e0aa"))) %>%
hc_add_theme(hc_theme_smpl()) %>%
hc_legend(enabled = FALSE)
})

Так что эту строку кода следует исправить: ctypeAnalysis <- cc[cc$Primary.Type == input$ctypeCrimeType,] %>% group_by(Year2) %>% summarise(Total = n()) %>% filter(Year2 %in% cbind(input$ctypeDate[1],input$ctypeDate[2])), кто-нибудь знает?

1 Ответ

0 голосов
/ 09 января 2019

Поскольку Year 2 отформатирован как фактор, вам необходимо преобразовать его обратно в числовые значения. Вы можете сделать это на том же шаге, что и функция фильтрации, например:

... filter(as.numeric(levels(Year2))[Year2] >= input$ctypeDate[1] & as.numeric(levels(Year2))[Year2] <= input$ctypeDate[2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...