# R pakcages
library(shiny)
library(dplyr)
# data preps
data(storms)
<- storms |>
storms_by_year group_by(year) |>
summarize(n = n_distinct(name))
<-storms |>
storms_by_year_wide mutate(year = as.integer(year)) |>
group_by(year) |>
summarize(n = n_distinct(name)) |>
filter(year %% 5 == 0) |>
pivot_wider(names_from = year, values_from = n)
# ui
<- fluidPage(
ui
)
# server
<- function(input, output, session) {
server
}
shinyApp(ui, server)
Shiny Exercise 3
Display Number of Storms by Year
Goal: Display Number of Storms by Year.
Add a table output element to the ui and a corresponding renderer to the server. The table should display the number of named storms in each year.
Add a plot output element to the ui, and a corresponding renderer to the server. The plot should display the number of named storms in each year.
Click to Check the Complete Shiny App Code!
# R packages
library(shiny)
library(tidyverse)
# data preps
data(storms)
<- storms |>
storms_by_year group_by(year) |>
summarize(n = n_distinct(name))
<-storms |>
storms_by_year_wide mutate(year = as.integer(year)) |>
group_by(year) |>
summarize(n = n_distinct(name)) |>
filter(year %% 5 == 0) |>
pivot_wider(names_from = year, values_from = n)
# ui
<- fluidPage(
ui
# 1. byYearTable
tableOutput("byYearTable"),
# 2. byYearPlot
plotOutput("byYearPlot")
)
<- function(input, output, session) {
server
# 1. byYearTable
$byYearTable <- renderTable({
output
storms_by_year_wide
})
# 2. byYearPlot
$byYearPlot <- renderPlot({
outputggplot(data = storms_by_year) +
geom_line(aes(x = year, y = n)) +
labs(x = "Year",
y = "Number of Storms") +
theme_minimal() +
theme(axis.title.x = element_text(size = rel(2),
margin = margin(30,0,0,0)),
axis.title.y = element_text(size = rel(2),
margin = margin(0,30,0,0)),
axis.text.x = element_text(size = rel(2)),
axis.text.y = element_text(size = rel(2)))
})
}
shinyApp(ui, server)