Я пытаюсь выбрать, чтобы пользователь выбрал столбец для отображения данных, которые они хотели бы видеть. Затем оттуда я фильтрую его по коэффициенту переменной, для которой они хотели бы видеть данные. Как мне заставить его правильно фильтровать?
library(shiny)
library(shinydashboard)
library(tidyverse)
ui <- fluidPage(
dashboardHeader(title = "Diamond"),
dashboardSidebar(disable = TRUE),
dashboardBody(
column(2, wellPanel( selectInput("GroupLevel", "Variable",
choices = c("Diamond Cut","Visible Color","Clarity Type"),
selected = "Diamond Cut"),uiOutput("ui"))),
dataTableOutput("value")
)
)
server <- function(input, output) {
grouping <- list("Diamond Cut" = "cut",
"Visible Color" = "color",
"Clarity Type" = "clarity")
output$ui <- renderUI({
if (is.null(input$GroupLevel))
return()
switch(input$GroupLevel,
"Diamond Cut" = selectInput("dynamic", "Cut",
choices = sort(unique(diamonds$cut))),
"Visible Color" = selectInput("dynamic", "Color",
choices = sort(unique(diamonds$color))),
"Clarity Type" = selectInput("dynamic", "Clarity",
choices = sort(unique(diamonds$clarity)))
)
})
data_table <-reactive(diamonds %>%
group_by_(grouping[[{input$GroupLevel}]]) %>%
summarise_if (is.numeric,mean) %>%
dplyr::filter(grouping[[{input$GroupLevel}]] == {input$dynamic}))
output$value <- renderDataTable({data_table()},options = list(searching = FALSE, paging = FALSE))
}
shinyApp(ui = ui, server = server)
@BrunoPinheiro У меня есть, он все еще не фильтрует правильно
Поставьте фильтр перед суммированием. Зачем группируешься, если показываешься только на уровне?
@Elin Поставить фильтр раньше года не помогло. В фактическом наборе данных я группирую по паре других переменных, таких как Week
и Year
.
До года? Вы обязательно должны сначала подгруппировать, а затем подвести итоги. Вы можете сделать фильтрацию сколь угодно сложной. Ваш анализ трубопроводов довольно нестандартен. Почему вы повторяете один и тот же список значений и меток несколько раз?
Попробуйте использовать filter_ (), который будет оценивать символьные выражения.