R блестящий checkergroupinputbox Группировать по реактивному вводу, суммировать по реактивному вводу - PullRequest
0 голосов
/ 24 января 2020

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

library(shiny)
library(ggplot2)  # for the diamonds dataset
library(shinydashboard)
library(dplyr)
y1<-diamonds
ui <- fluidPage(
  checkboxGroupInput("variable", "Variables to show:",
                     c("cut","color","clarity"),selected = "cut"),
  tableOutput("data"),
  textOutput("result")
)

server <- function(input, output, session) {
  base <- reactive({ 
    groupby <- enquo(input$variable)
    print(groupby)

    res <-y1%>% group_by(!!!groupby,x) %>% 
      tally() %>% 
      ungroup() %>% 
      summarise(sum = sum(x)) %>% 
      pull()
    res 
  }) 
  output$result <- renderText({
    input$variable
  })




  output$data<-renderTable({
    base()  

  }



  )
}

shinyApp(ui, server)

Спасибо, Хема

1 Ответ

0 голосов
/ 24 января 2020

Я не уверен, что точно понял ваш вопрос, но может быть что-то вроде этого:

library(shiny)
library(ggplot2)  # for the diamonds dataset
library(shinydashboard)
library(dplyr)
y1<-diamonds
ui <- fluidPage(
  checkboxGroupInput("variable", "Variables to show:",
                     c("cut","color","clarity"),selected = "cut"),
  tableOutput("data"),
  textOutput("result")
)

server <- function(input, output, session) {
  base <- reactive({ 
    res <- y1 %>% group_by(eval(parse(text = input$variable)),x) %>% 
      tally() %>% 
      #ungroup() %>% 
      summarise(sum = sum(x)) %>% 
      pull()
    res 
  }) 

  output$result <- renderText({
    input$variable
  })

  output$data<-renderTable({
    base()  
  })
}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...