使用dateInput值作为数据框中的范围子集
你好,我有一个简单的闪亮的应用程序下面。这是使用dateInput值作为数据框中的范围子集,date,shiny,reactive,Date,Shiny,Reactive,你好,我有一个简单的闪亮的应用程序下面。这是df: location = c("100 ail","16th and Whitmore","40AB01 - ANTWERPEN","100 ail","16th and Whitmore","40AB01 - ANTWERPEN") date = c("2015-09-01 00:00:00","2016-03-06 19:00:00","2016-11-22 15:00:00","2018-02-01 09:30:00", "2018-02-
df
:
location = c("100 ail","16th and Whitmore","40AB01 - ANTWERPEN","100 ail","16th and Whitmore","40AB01 - ANTWERPEN")
date = c("2015-09-01 00:00:00","2016-03-06 19:00:00","2016-11-22 15:00:00","2018-02-01 09:30:00", "2018-02-01 03:00:00", "2017-03-07 10:00:00")
pm25=c("FALSE","FALSE","FALSE","FALSE","FALSE","FALSE")
pm10=c("TRUE","FALSE","FALSE","TRUE","FALSE","FALSE")
no2=c("TRUE","FALSE","FALSE")
latitude=c(47.932907,41.322470,36.809700,47.932907,41.322470,36.809700)
longitude=c(106.92139000,-95.93799000
,-107.65170000,106.92139000,-95.93799000
,-107.65170000)
df = data.frame(location, date,latitude,longitude,pm25,pm10,no2)
应用程序:
ui = fluidPage(
uiOutput("dt"),
uiOutput("dt2"),
submitButton(text = "Submit", icon = NULL, width = NULL),
shiny::dataTableOutput("merged")
)
#server.r
#df$location <- gsub( " " , "+" , df$location)
server = function(input, output, session) {
output$dt<-renderUI({
dateInput('date',
label = 'First Available Date',
value = df$date
)
})
output$dt2<-renderUI({
dateInput('date2',
label = 'Last available Date',
value = df$date
)
})
output$merged <- shiny::renderDataTable({
df %>%
filter(date >= input$dt & date <= input$dt2)
})
}
shinyApp(ui = ui, server = server)
ui=fluidPage(
输入输出(“dt”),
uiOutput(“dt2”),
submitButton(text=“Submit”,图标=NULL,宽度=NULL),
闪亮::dataTableOutput(“合并”)
)
#服务器.r
#df$location首先,您需要将date
列转换为date
格式。(为此,我使用了lubridate
library(lubridate)
df = data.frame(location, date = as_datetime(date),latitude,longitude,pm25,pm10,no2)
在这种情况下不需要使用renderUI
,因为您的数据不是动态的。(它也是这样工作的,只是不理想)。我只需要使用dateInput
:
dateInput('date',
label = 'First Available Date',
value = min(df$date)
) ,
dateInput('date2',
label = 'Last available Date',
value = max(df$date)
)
另外,对于dateInput
设置value=df$date
会导致一个警告,因为value
参数只接受一个值,但是df$date
是长度为6的向量。因此,我将其改为min(df$date)
和max(df$date)
在render
函数中,您需要指定dateInput
s的id
s,因此使用input$date
和input$date2
而不是dt
和dt2
注意:使用dplyr过滤器时
:不需要运算符&
,只需用逗号分隔过滤条件即可
df %>%
filter(as_date(date) >= input$date, as_date(date) <= input$date2)
首先,您需要将date
列转换为date
格式。(为此,我使用了lubridate
)
library(lubridate)
df = data.frame(location, date = as_datetime(date),latitude,longitude,pm25,pm10,no2)
在这种情况下不需要使用renderUI
,因为您的数据不是动态的。(它也是这样工作的,只是不理想)。我只需要使用dateInput
:
dateInput('date',
label = 'First Available Date',
value = min(df$date)
) ,
dateInput('date2',
label = 'Last available Date',
value = max(df$date)
)
另外,对于dateInput
设置value=df$date
会导致一个警告,因为value
参数只接受一个值,但是df$date
是长度为6的向量。因此,我将其改为min(df$date)
和max(df$date)
在render
函数中,您需要指定dateInput
s的id
s,因此使用input$date
和input$date2
而不是dt
和dt2
注意:使用dplyr过滤器时
:不需要运算符&
,只需用逗号分隔过滤条件即可
df %>%
filter(as_date(date) >= input$date, as_date(date) <= input$date2)
它可能与日期问题有关。我可以在日期和时间之间放置\而不是“”但这会改变日期格式,dateInput无法读取。可能是因为dateInput将df中的值作为输入,并且可以使用这些值来更新自身。我通常尝试使用自己创建的选项对数据框进行子集。它就像一个圆。或者dateInput不能用于t他的任务类型。它可能与日期问题有关。我可以在日期和时间之间放置\而不是“”但这会改变日期格式,dateInput无法读取。可能是因为dateInput将df中的值作为输入,并且可以使用这些值来更新自身。我通常尝试使用自己创建的选项对数据框进行子集。它就像一个圆。或者dateInput不能用于t这类任务。您只需在此处使用一个dateRangeInput
,即可使用input$date[1]
和input$date[2]
访问这两个值。实际上,我的真实数据是动态的(不是这一个)因此,我想我应该保持输入$dt,输入$dt2?即使是这样,您也可以将这些值称为input$date
和input$date2
。这些值不会传递到uiOutput
。您可以在这里使用一个dateRangeInput
,并使用input$date[1]
和input$date>访问这两个值[2]
实际上我的真实数据是动态的(不是这个),所以我想我应该保持输入$dt,输入$dt2?即使是这种情况,你也可以将这些值称为input$date
和input$date2
。这些值不会传递到uiOutput
。