Biplab Nayak
2021-Jun-07 17:03 UTC
[R] Need help to fix the max date filter problem in the date input
Hi All, I Need a bit of help to fix the code. Code: library(readr) library(shiny) ttclasses <- read_csv("ttclasses.csv") #Filter data library(stringr) library(dplyr) ttclasses <-ttclasses %>% filter(str_detect(assessment, "Assignment")) ttclasses <-ttclasses %>% filter(str_detect(name, "Name")) ##Remove NA values. library(tidyverse) ttclasses <-ttclasses %>% drop_na("score") #Convert to factor ttclasses$assessment <- as.factor(ttclasses$assessment) ttclasses$due_date = as.Date(ttclasses$due_date, format = "mm/dd/yy") ##ttclasses$name <- as.factor(ttclasses$name) # Define UI ---- ui <- fluidPage( # App title ---- titlePanel("Assessment Dashboard"), # Sidebar layout with input and output definitions ---- sidebarLayout( # Sidebar panel for inputs ---- sidebarPanel( # Input: Selector for variable to plot the grades for the selected assignment ---- selectInput("assessment", "Assessment:", c("Assignment 1" = "Assignment 1", "Assignment 2" = "Assignment 2", "Assignment 3" = "Assignment 3", "Assignment 4" = "Assignment 4", "Assignment 5" = "Assignment 5")), selectInput("name", "Name:", ttclasses[,2]), dateRangeInput("due_date", "Due-Date:",start = max(ttclasses$due_date) , separator = " - ") ), # Main panel for displaying outputs ---- mainPanel( # Output: Plot of the requested variable against grade ---- plotOutput("gradePlot") ) ) ) # Define server logic to plot ---- server <- function(input, output) { output$gradePlot <- renderPlot({ grade_ad = input$assessment boxplot(ttclasses$score[ttclasses$assessment==grade_ad], frame.plot=FALSE, horizontal=TRUE, col="magenta", main=grade_ad) ttclasses <-ttclasses %>% filter(ttclasses$due_date >= input$due_date[1] & ttclasses$due_date <= input$due_date[2]) }) } # Create Shiny app ---- shinyApp(ui, server) Thanks & Regards [[alternative HTML version deleted]]
Rui Barradas
2021-Jun-07 19:21 UTC
[R] Need help to fix the max date filter problem in the date input
Hello, This is not reproducible, we don't have access to ttclasses.csv. Can you post sample data? Please post the output of dput(ttclasses) Or, if it is too big, the output of dput(head(ttclasses, 20)) Hope this helps, Rui Barradas ?s 18:03 de 07/06/21, Biplab Nayak escreveu:> Hi All, > I Need a bit of help to fix the code. > Code: > library(readr) > library(shiny) > ttclasses <- read_csv("ttclasses.csv") > > #Filter data > library(stringr) > library(dplyr) > ttclasses <-ttclasses %>% > filter(str_detect(assessment, "Assignment")) > ttclasses <-ttclasses %>% > filter(str_detect(name, "Name")) > > ##Remove NA values. > library(tidyverse) > ttclasses <-ttclasses %>% drop_na("score") > > #Convert to factor > ttclasses$assessment <- as.factor(ttclasses$assessment) > ttclasses$due_date = as.Date(ttclasses$due_date, format = "mm/dd/yy") > ##ttclasses$name <- as.factor(ttclasses$name) > > # Define UI ---- > ui <- fluidPage( > > # App title ---- > titlePanel("Assessment Dashboard"), > > # Sidebar layout with input and output definitions ---- > sidebarLayout( > > # Sidebar panel for inputs ---- > sidebarPanel( > > # Input: Selector for variable to plot the grades for the selected > assignment ---- > selectInput("assessment", "Assessment:", > c("Assignment 1" = "Assignment 1", > "Assignment 2" = "Assignment 2", > "Assignment 3" = "Assignment 3", > "Assignment 4" = "Assignment 4", > "Assignment 5" = "Assignment 5")), > selectInput("name", "Name:", > ttclasses[,2]), > > dateRangeInput("due_date", > "Due-Date:",start = max(ttclasses$due_date) , > separator = " - ") > ), > > # Main panel for displaying outputs ---- > mainPanel( > > # Output: Plot of the requested variable against grade ---- > plotOutput("gradePlot") > > ) > ) > ) > > # Define server logic to plot ---- > server <- function(input, output) { > output$gradePlot <- renderPlot({ > grade_ad = input$assessment > boxplot(ttclasses$score[ttclasses$assessment==grade_ad], > frame.plot=FALSE, horizontal=TRUE, col="magenta", main=grade_ad) > ttclasses <-ttclasses %>% > filter(ttclasses$due_date >= input$due_date[1] & ttclasses$due_date > <= input$due_date[2]) > }) > } > > # Create Shiny app ---- > shinyApp(ui, server) > > Thanks & Regards > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Rui Barradas
2021-Jun-07 21:51 UTC
[R] Need help to fix the max date filter problem in the date input
Hello, Thanks for the data. There were some, not many, bugs that I have corrected below. library(tidyverse) #library(stringr) # attached with tidyverse #library(readr) library(shiny) ttclasses <- read_csv("~/tmp/ttclasses.csv") #Filter data ttclasses <-ttclasses %>% filter(str_detect(assessment, "Assignment")) # With the attached data this filter # removes all rows so I have # commented it out #ttclasses <-ttclasses %>% # filter(str_detect(name, "Name")) ##Remove NA values. ttclasses <-ttclasses %>% drop_na("score") #Convert to factor ttclasses$assessment <- factor(ttclasses$assessment) # please see the formats in help("strptime") ttclasses$due_date <- as.Date(ttclasses$due_date, format = "%m/%d/%y") ##ttclasses$name <- factor(ttclasses$name) # Define UI ---- ui <- fluidPage( # App title ---- titlePanel("Assessment Dashboard"), # Sidebar layout with input and output definitions ---- sidebarLayout( # Sidebar panel for inputs ---- sidebarPanel( # Input: Selector for variable to plot the grades for the selected # assignment ---- selectInput("assessment", "Assessment:", c("Assignment 1" = "Assignment 1", "Assignment 2" = "Assignment 2", "Assignment 3" = "Assignment 3", "Assignment 4" = "Assignment 4", "Assignment 5" = "Assignment 5")), selectInput("name", "Name:", ttclasses[,2]), dateRangeInput("due_date", "Due-Date:",start = max(ttclasses$due_date) , separator = " - ") ), # Main panel for displaying outputs ---- mainPanel( # Output: Plot of the requested variable against grade ---- plotOutput("gradePlot") ) ) ) # Define server logic to plot ---- server <- function(input, output) { output$gradePlot <- renderPlot({ grade_ad = input$assessment boxplot(ttclasses$score[ttclasses$assessment==grade_ad], frame.plot=FALSE, horizontal=TRUE, col="magenta", main=grade_ad) ttclasses <-ttclasses %>% filter(ttclasses$due_date >= input$due_date[1] & ttclasses$due_date <= input$due_date[2]) }) } # Create Shiny app ---- shinyApp(ui, server) Hope this helps, Rui Barradas ?s 18:03 de 07/06/21, Biplab Nayak escreveu:> Hi All, > I Need a bit of help to fix the code. > Code: > library(readr) > library(shiny) > ttclasses <- read_csv("ttclasses.csv") > > #Filter data > library(stringr) > library(dplyr) > ttclasses <-ttclasses %>% > filter(str_detect(assessment, "Assignment")) > ttclasses <-ttclasses %>% > filter(str_detect(name, "Name")) > > ##Remove NA values. > library(tidyverse) > ttclasses <-ttclasses %>% drop_na("score") > > #Convert to factor > ttclasses$assessment <- as.factor(ttclasses$assessment) > ttclasses$due_date = as.Date(ttclasses$due_date, format = "mm/dd/yy") > ##ttclasses$name <- as.factor(ttclasses$name) > > # Define UI ---- > ui <- fluidPage( > > # App title ---- > titlePanel("Assessment Dashboard"), > > # Sidebar layout with input and output definitions ---- > sidebarLayout( > > # Sidebar panel for inputs ---- > sidebarPanel( > > # Input: Selector for variable to plot the grades for the selected > assignment ---- > selectInput("assessment", "Assessment:", > c("Assignment 1" = "Assignment 1", > "Assignment 2" = "Assignment 2", > "Assignment 3" = "Assignment 3", > "Assignment 4" = "Assignment 4", > "Assignment 5" = "Assignment 5")), > selectInput("name", "Name:", > ttclasses[,2]), > > dateRangeInput("due_date", > "Due-Date:",start = max(ttclasses$due_date) , > separator = " - ") > ), > > # Main panel for displaying outputs ---- > mainPanel( > > # Output: Plot of the requested variable against grade ---- > plotOutput("gradePlot") > > ) > ) > ) > > # Define server logic to plot ---- > server <- function(input, output) { > output$gradePlot <- renderPlot({ > grade_ad = input$assessment > boxplot(ttclasses$score[ttclasses$assessment==grade_ad], > frame.plot=FALSE, horizontal=TRUE, col="magenta", main=grade_ad) > ttclasses <-ttclasses %>% > filter(ttclasses$due_date >= input$due_date[1] & ttclasses$due_date > <= input$due_date[2]) > }) > } > > # Create Shiny app ---- > shinyApp(ui, server) > > Thanks & Regards > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >