繁体   English   中英

R shiny checkergroupinputbox 按无功输入分组,按无功输入汇总

[英]R shiny checkergroupinputbox Group by reactive input, summarize by reactive input

我正在尝试构建一个 shiny 应用程序,让用户可以灵活地选择用于分组依据和汇总的变量。 复选框将有一个选项用于按变量选择组。 现在我还没有给出测量变量作为选择,因为我在 group by 上苦苦挣扎。 我希望根据选择汇总数字。

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)

谢谢,盒马

我不确定我是否完全理解你的问题,但也许是这样的:

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)

如果可以从复选框中将 select 设为多个,这样您就需要像 group_by(x,y) 这样的东西,这可能会帮助您得到想要的东西:

 group_by(across(all_of(input$group)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM