【问题标题】:Filtering by date in Shiny在 Shiny 中按日期过滤
【发布时间】:2018-04-16 02:26:35
【问题描述】:

作为一个可怜的 Shiny 家伙,无法解决简单的任务。

我在数据框中有一行日期

crime.date <- strptime(incidents$REPORT_DAT, format = "%Y-%m-%d") 

我的日期输出如下所示。

[1] "2017-04-07 EDT" "2017-03-13 EDT" "2017-01-08 EST" "2017-01-25 EST" "2017- 
01-03 EST" "2017-01-03 EST" "2017-01-03 EST"
[8] "2017-01-03 EST" "2017-01-03 EST" "2017-01-03 EST" "2017-01-03 EST" "2017-
01-04 EST" "2017-01-03 EST" "2017-01-03 EST"

现在我尝试可视化所有犯罪的选择,由这个过滤器选择。

# USER INTERFACE CODE

ui <- fluidPage(
titlePanel("Washington, DC crimes by date"),

column(4, wellPanel(
dateRangeInput('dateRange',
               label = 'Filter crimes by date',
               start = crime.date , end = crime.date
)
)),
column(6,
     verbatimTextOutput("dateRange")
)
)

# SERVER CODE

server <- function(input, output, session) {
output$dateRangeText  <- renderText({
paste("input$dateRange is", 
      paste(as.character(input$dateRange), collapse = " to ")
)
})
}

shinyApp(ui = ui, server = server)

我相信我的错误介于 start 和 end 之间,因为我输入了他们唯一的 crime.date 变量。

我想要什么?我想选择开始和结束日期并接收在此期间发生的所有事件(现在可以输出为文本)。

非常感谢任何帮助。

谢谢

奥莱克斯

【问题讨论】:

    标签: r date shiny filtering


    【解决方案1】:

    要过滤您的数据框,我们可以使用该行

    incidents %>% filter(REPORT_DAT >= input$dateRange[1] & REPORT_DAT <= input$dateRange[2])
    

    renderDataTable 语句中。下面给出了一个工作示例。请注意,由于您没有包含示例数据,因此我自己创建了一些示例数据。

    希望这会有所帮助!


    library(dplyr)
    library(shiny)
    
    # Sample data
    incidents = data.frame(REPORT_DAT=c('2018-01-01','2018-02-01','2018-03-01','2018-04-01','2018-05-01'))
    # Convert character to Date
    incidents$REPORT_DAT =  as.Date(incidents$REPORT_DAT, format = "%Y-%m-%d")
    
    ui <- fluidPage(
      titlePanel("Washington, DC crimes by date"),
    
      column(4, wellPanel(
        dateRangeInput('dateRange',
                       label = 'Filter crimes by date',
                       start = as.Date('2018-01-01') , end = as.Date('2018-06-01')
        )
      )),
      column(6,
             dataTableOutput('my_table')
      )
    )
    
    server <- function(input, output, session) {
      output$my_table  <- renderDataTable({
          # Filter the data
          incidents %>% filter(REPORT_DAT >= input$dateRange[1] & REPORT_DAT <= input$dateRange[2])
      })
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 2019-03-01
      相关资源
      最近更新 更多