在Shiny中按日期过滤 [英] Filtering by date in Shiny

查看:46
本文介绍了在Shiny中按日期过滤的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

cannot resolve a simple task as a poor Shiny guy.

我在数据框中有一行带有日期的

I have a row in a data frame with dates

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

我的日期输出如下所示。

My output for dates looks like this.

[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"

现在,我尝试形象化此过滤器选择的所有犯罪的选择。 / p>

Now I try to visualize the selection of all crimes, chosen by this filter.

# 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)

我相信我的错误是在开始和结束之间,因为我将它们的唯一的Crime.date变量放在了其中。

I believe that my mistake is somewhere between start and end because I put their only crime.date variable.

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

What do I want? I want to select start and end date and receive all incidents, which happened during this period (output as a text is fine for now).

任何帮助都是值得的。

Any help is MUCH APPRECIATED.

谢谢

Oleksiy

推荐答案

要过滤数据框,我们可以使用以下行

To filter your dataframe, we can use the line

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

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

within a renderDataTable statement. A working example is given below. Note that since you did not include sample data, I created some sample data myself.

希望这会有所帮助!

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)

这篇关于在Shiny中按日期过滤的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆