我生成有关下列变量疾病数据帧:[R闪亮 - 如何创建作出反应,通过时间单位根据时间单位(周,月,年)和聚合数据的barplot
- 日期(发病时间)
- 例(例数,默认情况下,案件数为1)
- 周(疾病情况下一周)
- 月(疾病情况下一个月)
- 年(一年的病例)。
我的UI是在这里:
library(shiny)
library(dplyr)
library(lubridate)
library(ggplot2)
library(scales)
Disease<-data.frame(Date=seq(as.Date("2015/1/1"), as.Date("2017/1/1"), "days"),Cases=rep(1))
Disease$Week<-as.Date(cut(Disease$Date,breaks="week",start.on.monday = TRUE))
Disease$Month<-as.Date(cut(Disease$Date,breaks="month"))
Disease$Year<-as.Date(cut(Disease$Date,breaks="year"))
ui <- fluidPage(
dateRangeInput("daterange", "Choice the date",
start = min(Disease$Date),
end = max(Disease$Date),
min = min(Disease$Date),
max = max(Disease$Date),
separator = " - ", format = "dd/mm/yy",
startview = 'Month', language = 'fr', weekstart = 1),
selectInput(inputId = 'Time_unit',
label='Time_unit',
choices=c('Week','Month','Year'),
selected='Month'),
plotOutput("Disease"))
我希望创建严正根据时间单位(即一周,一个月,一年)barplot,并通过时间单位agregates数据
你会发现下面的服务器的代码(但它不工作):
server <- function(input, output) {
dateRangeInput<-reactive({
dataset= subset(Disease, Date >= input$daterange[1] & Date <=
input$daterange[2])
return(dataset)
})
selectInput= reactive({
summarize(group_by(dateRangeInput(),
period = switch(input$Time_unit,
"Week"=Disease$Week,
"Month" = Disease$Month,
"Year" = Disease$Year)))
})
output$Disease <-renderPlot({
ggplot(data=selectInput(), aes_string(x="period",x="Cases"))
+ stat_summary(fun.y = sum, geom = "bar")
+ labs(title="Disease", y ="Number of cases")
+theme_classic()
+theme(plot.title = element_text(hjust = 0.5))
})
}
shinyApp (ui = ui, server = server)
你会发现以下barlines,我想获得如果我选择周或一个月或一年:
对不起 “按年”,我不能发布更多比2链接
我忘了说:你好! – Pascal