grâce à vos réponses, j'ai réussi à faire un barplot qui réagit en fonction de l'unité de temps (Semaine, Mois, Année) et agrège données par unité de temps (le lien est ici): R Shiny - How to create a barplot that reacts according to the time unit (Week, Month, Year) and agregates data by time unitR Shiny - Comment utiliser la fonction "fonte" (package reshape2) pour créer un barplot empilé
Ensuite, je souhaite faire un barplot empilé avec deux variables. Pour cela, je génère la trame de données suivante avec deux variables (c'est-à-dire dans mon exemple: Imported_cases et Nativethonous_ases) et j'applique la fonction "fondre". L'interface utilisateur est ici:
library(shiny)
library(dplyr)
library(lubridate)
library(ggplot2)
library(scales)
library(reshape2)
Disease <- data.frame(
Date = seq(as.Date("2015/1/1"), as.Date("2017/1/1"), "days"),
Imported_cases = rep(1),Autochtonous_cases=rep(2))
Disease <- Disease %>% mutate(
Week = format(Date, "%Y-%m-%U"),
Month = format(Date, "%Y-%m"), Year = format(Date, "%Y"))
Disease<- melt(Disease, id = c("Date","Week","Month","Year"),
measured = c("Imported_cases", "Autochtonous_cases"))
print(head(Disease))
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"))
Lorsque j'exécute mon serveur, R Shiny affiche: L'objet d'erreur 'variable' est introuvable. Vous trouverez ci-dessous le code du serveur:
server <- function(input, output) {
dateRangeInput <- reactive({
dataset <- subset(
Disease, Date >= input$daterange[1] & Date <= input$daterange[2])
dataset
})
selectInput = reactive({
dataset <- dateRangeInput() %>% group_by_(input$Time_unit) %>%
summarise(Sum = sum(value))
dataset
})
output$Disease <-renderPlot({
ggplot(data=selectInput(),
aes_string(x = input$Time_unit, y = "Sum",
fill = "variable")) +
geom_bar(stat = "identity")
})
}
shinyApp (ui = ui, server = server)
Je ne sais pas si le problème est le code de selectInput
ou le code de output$Disease
. Je ne comprends pas pourquoi Shiny ne trouve pas "variable" (cf print (head (Maladie)) Merci pour votre aide (j'espère être clair)
J'ai oublié de dire: Bonjour! – Pascal