[R] Need help to fix the max date filter problem in the date input

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Mon Jun 7 23:51:54 CEST 2021


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 using 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.
>



More information about the R-help mailing list