如何进一步聚合R中的筛选数据

如何进一步聚合R中的筛选数据,r,shiny,data-visualization,R,Shiny,Data Visualization,以下是我的输入的外观: OrderDate | Company | ApprovalID | Amount |State, 2009-01-02 | A | AC | 200 | NY, 2009-01-05 | A | BT | 20000 | NY, 2009-01-04 | A | AC | 500 | CO, 2009-01-02 | B | XY | 2000 | TX, 2009-05-41 | B | XY | 30 | TX, 2009-04-21 | D | CR | 2222

以下是我的输入的外观:

OrderDate | Company | ApprovalID | Amount |State,
2009-01-02 | A | AC | 200 | NY,
2009-01-05 | A | BT | 20000 | NY,
2009-01-04 | A | AC | 500 | CO,
2009-01-02 | B | XY | 2000 | TX,
2009-05-41 | B | XY | 30 | TX,
2009-04-21 | D | CR | 2222 | BR,
我让我的用户输入日期范围和公司

                       tabPanel("Plot", fluid = TRUE,
                                sidebarLayout(
                                    sidebarPanel(id = 'sidebar',
                                        dateRangeInput("dateinput","Selects Dates",start = Sys.Date()-30,end = Sys.Date()),
                                                 selectInput("companyinput", "Select Comp", choices=choices1,multiple = TRUE,selected = NULL) 
                                                 ),
因此,如果用户选择2009-01-01和2009-01-31之间的日期以及公司A,我希望有一个表显示:

OrderDate | Company | ApprovalID | Amount |State ,
2009-01-02 | A | AC | 200 | NY ,
2009-01-05 | A | BT | 20000 | NY,
2009-01-04 | A | AC | 500 | CO,
filtered%
过滤器(as.Date(OrderDate)>输入$dateinput[1],
as.Date(OrderDate)>=输入$dateinput[2],
)
}
否则{
bc3%>%
过滤器(as.Date(OrderDate)>输入$dateinput[1],
as.Date(OrderDate)>=输入$dateinput[2],
CompanyNameID==输入$companyinput
)
但在同一个仪表板中,我想显示不同的图表:

进一步按有效金额和金额进行汇总,如条形图所示 AC花费了700英镑,BT花费了20000英镑(之前的过滤器或订单日期和公司完好无损) 然后是其他图表 按状态和金额汇总,即,让我们说一个显示状态和金额的条形图(再次说明用户选择的订单日期和公司)

有没有一种方法可以做到这一点,或者将反应性输入存储为数据帧,这样我就可以按照自己的意愿操作它

谢谢,
HV

您确定
input$companyinput
NULL
吗?如果
选择input
,它应该始终是一些字符串;如果是用户输入,我仍然认为它将是一个字符串,尽管它可能是空的(
!nzhar(…)
).然而,我认为你的不等式是错的,你是说
(我确实在输入中看到
NULL
的时间是在一个闪亮的应用程序的启动阶段,大约半秒钟。当反应块启动但输入小部件还没有完全设置好时,它们可能是
NULL
。我想这是
闪亮::req
的推动力)
   filtered <- reactive({
            if(is.null(input$companyinput)){
            bc3 %>%
                filter(as.Date(OrderDate) > input$dateinput[1],
                       as.Date(OrderDate) >= input$dateinput[2],
                )

                }
            else{
                bc3 %>%
                    filter(as.Date(OrderDate) > input$dateinput[1],
                           as.Date(OrderDate) >= input$dateinput[2],
                           CompanyNameID == input$companyinput
                    )