---
title: "OrangeCounty Covid19 DashBoard"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: fill
social: ["twitter","facebook","menu","email"]
source_code: embed
storyboard: true
---
```{r setup, include=FALSE}
library(flexdashboard)
library(knitr)
library(DT)
library(rpivotTable)
library(ggplot2)
library(plotly)
library(dplyr)
library(openintro)
library(highcharter)
library(ggvis)
library(data.table)
library(widgetframe)
library(leaflet)
library(tidyverse)
library(ggmap)
library(leaflet.extras)
library(htmltools)
library(maps)
library(mapproj)
library(mapdata)
```
```{r}
#icon https://www.w3schools.com/icons/fontawesome5_icons_medical.asp
```
```{r}
data <- read.csv("~/Documents/CP101/4Assignment/Assignment 3/dashboard/VehicleFailure.csv")
#data from chhs
data2<-read.csv('https://data.chhs.ca.gov/dataset/6882c390-b2d7-4b9a-aefa-2068cee63e47/resource/6cd8d424-dfaa-4bdd-9410-a3d656e1176e/download/covid19data.csv')
```
```{r}
#subset data: County.Name=="Orange"
data2_Orange <-subset(data2, County.Name=="Orange")
#indicators in dashboard
total_Confirmed <-tail(data2_Orange,1)[1,3]
total_Death <- tail(data2_Orange,1)[1,4]
ICU_Rate <- (tail(data2_Orange,1)[1,7]+tail(data2_Orange,1)[1,8]+495)/673
today_Confirmed <-tail(data2_Orange,1)[1,3]-tail(data2_Orange,2)[1,3]
fatality_rate <- tail(data2_Orange,1)[1,4]/tail(data2_Orange,1)[1,3]
InICUCurrent<-tail(data2_Orange,1)[1,7]
hospitalizedRate<-tail(data2_Orange,1)[1,5]/tail(data2_Orange,1)[1,3]
```
```{r}
mycolors <- c("blue", "#FFC125", "darkgreen","darkorange","blue", "#FFC125", "darkgreen","darkorange")
```
Visualization
======================================================================
Row
----------------------------------------------------------------------
### days: ShelterInPlace
```{r}
today <-Sys.Date()
stay_at_home_Starts <- as.Date("2020-03-19")
stay_at_home_Total=today-stay_at_home_Starts
valueBox(paste(today-stay_at_home_Starts),
icon=("fa-clock"),
color="warning")
```
### Confirmed New
```{r}
#("primary", "info", "success", "warning", "danger")
valueBox(today_Confirmed,
color="info",
icon="fa-user")
```
### Confirmed | Death (Total)
```{r}
#https://www.w3schools.com/icons/fontawesome5_icons_communication.asp
valueBox(paste(total_Confirmed,"|",total_Death),
color="danger",
icon="fa-bell")
```
### **ICU OccupiedRate**
```{r}
gauge(round(ICU_Rate,
digits = 2),
min=0,
max=1,
gaugeSectors(success = c(0,0.70),
warning=c(0.70,0.9),
danger = c(0.9,1),
colors=c("green","orange","red")))
```
### In ICU Currently
```{r}
valueBox(InICUCurrent,
icon="fa-heartbeat")
```
### Hospitalized Rate
```{r}
valueBox(paste(round(hospitalizedRate*100, digits =1),"%"),
icon="fa-building")
```
### Fatality Rate
```{r}
valueBox(paste(round(fatality_rate*100, digits =1),"%"),
icon="fa-tag")
```
Row
--------------------------------------
### Cumulative Cases
```{r}
#######Data Preparation
# newcCasesDaily: daily increasing. newcCasesAccelerate:the accelerate of new cases increasing
data3_Orange <-data2_Orange
data3_Orange$Total.Count.Confirmed2<-data3_Orange$Total.Count.Confirmed
#shife down one line:transform
temp1<- data3_Orange$Total.Count.Confirmed2
data3_Orange <- transform(data3_Orange, temp1 = c(0, temp1[-nrow(data3_Orange)]))
data3_Orange$newcCasesDaily<-data3_Orange$Total.Count.Confirmed2-data3_Orange$temp1
data3_Orange$newcCasesDaily[1]<-0
#shife down one line:transform
temp2<- data3_Orange$newcCasesDaily
data3_Orange <- transform(data3_Orange, temp2 = c(0, temp2[-nrow(data3_Orange)]))
data3_Orange$newcCasesAccelerate<-data3_Orange$newcCasesDaily-data3_Orange$temp2
```
```{r}
#culmulative
fig <- plot_ly(x=factor(data3_Orange$Most.Recent.Date,levels=data2_Orange$Most.Recent.Date), y=data3_Orange$Total.Count.Confirmed,
type = 'bar',
color=rainbow(length(data3_Orange$Most.Recent.Date)),
name='Cumulative'
) %>%
layout(xaxis = list(title = "date"),
yaxis = list(title = "Count: Cumulative Cases"))
fig <- fig %>% layout(showlegend = FALSE)
fig
```
### Trend
```{r}
#new cases
fig2 <- plot_ly(x=factor(data3_Orange$Most.Recent.Date,levels=data2_Orange$Most.Recent.Date), y=data3_Orange$newcCasesDaily,
type = 'scatter',
mode = 'lines',
name='New'
) %>%
layout(xaxis = list(title = "date"),
yaxis = list(title = "Count"))
#accelerate
fig2<-fig2 %>%
add_trace(y=data3_Orange$newcCasesAccelerate,
type = 'scatter',
mode = 'lines',
name='Accelerated'
)
fig2
```
```{r}
#failure month vs Mileage
p3 <- plot_ly(data,
x = ~fm,
y= ~Mileage,
text = paste("FM:", data$fm,
"Mileage:",
data$Mileage),
type = "bar") %>%
layout(xaxis = list(title = "FM"),
yaxis = list(title = "Failure Mileage"))
p3
```
Row
-------------------------
### Positive Rate by Race
```{r}
#Data scraping
library(XML)
library(RCurl)
library(rlist)
theurl <- getURL("https://www.cdph.ca.gov/Programs/CID/DCDC/Pages/COVID-19/Race-Ethnicity.aspx",.opts = list(ssl.verifypeer = FALSE) )
tables <- readHTMLTable(theurl,header=TRUE,stringsAsFactors = FALSE)
tables <- list.clean(tables, fun = is.null, recursive = FALSE)
```
```{r}
# pick table
raceDeath<-tables[[1]]
#change column names
names(raceDeath)[1] <- "Race"
names(raceDeath)[2] <- "No_Cases"
names(raceDeath)[3] <- "Percent_Cases"
names(raceDeath)[4] <- "No_Deaths"
names(raceDeath)[5] <- "Percent_Deaths"
names(raceDeath)[6] <- "Percent_CA_Population"
#change row names
#rownames(raceDeath)[rownames(raceDeath) == "Merc 280"] <- "Native"
#delete last row
raceDeath<- raceDeath[-nrow(raceDeath),]
#Function: replacec comma
replaceCommas<-function(x){
x<-as.numeric(gsub("\\,", "", x))
}
#remove Delimiter
raceDeath$No_Cases <- replaceCommas(raceDeath$No_Cases)
raceDeath$No_Deaths <- replaceCommas(raceDeath$No_Deaths)
```
```{r}
raceDeath[1]<-c("Latino","White","Asian","Black","Others","Natives","Natives","Others")
#change factor to numeric
raceDeath$Percent_Cases <- as.numeric(raceDeath$Percent_Cases)
raceDeath$Percent_Deaths <- as.numeric(raceDeath$Percent_Deaths)
raceDeath$Percent_CA_Population <- as.numeric(raceDeath$Percent_CA_Population)
# combine same race of "other" and "Native to 2 list
Other<-c("Other",sum(raceDeath[ raceDeath$'Race' == 'Others',2]),sum(raceDeath[ raceDeath$'Race' == 'Others',3]),sum(raceDeath[ raceDeath$'Race' == 'Others',4]),sum(raceDeath[ raceDeath$'Race' == 'Others',5]),sum(raceDeath[ raceDeath$'Race' == 'Others',6]))
Native<-c("Native",sum(raceDeath[raceDeath$'Race' == 'Natives',2]),sum(raceDeath[ raceDeath$'Race' == 'Natives',3]),sum(raceDeath[ raceDeath$'Race' == 'Natives',4]),sum(raceDeath[ raceDeath$'Race' == 'Natives',5]),sum(raceDeath[ raceDeath$'Race' == 'Natives',6]))
#add list to data frame
raceDeath<-rbind(raceDeath, Other)
raceDeath<-rbind(raceDeath, Native)
#delete 4 original rows "others" and "Native"
raceDeath<-raceDeath[-c(5,6,7,8),]
#change factor to numeric
raceDeath$No_Cases<-as.numeric(raceDeath$No_Cases)
raceDeath$Percent_Cases<-as.numeric(raceDeath$Percent_Cases)
raceDeath$No_Deaths<-as.numeric(raceDeath$No_Deaths)
raceDeath$Percent_Deaths<-as.numeric(raceDeath$Percent_Deaths)
raceDeath$Percent_CA_Population<-as.numeric(raceDeath$Percent_CA_Population)
```
```{r}
##################################################### pie:no.cases bar:pop vs death
#All Cases and Deaths associated with COVID-19 by Race and Ethnicity
raceDeath%>%
plot_ly(labels=~Race,
values=~No_Cases,
marker = list(color = mycolors)) %>%
add_pie(hole=0.4)%>%
layout(xaxis = list(zeroline = F,
showline = F,
showticklabels = F,
showgrid = F),
yaxis = list(zeroline = F,
showline = F,
showticklabels = F,
showgrid = F))
```
### Death Rate VS Population Rate By Race
```{r}
fig <- plot_ly(raceDeath, x = ~Race, y = ~Percent_Deaths, type = 'bar', name = 'DeathRate')
fig <- fig %>% add_trace(y = ~Percent_CA_Population, name = 'PopRate')
fig <- fig %>% layout(yaxis = list(title = 'Count'), barmode = 'group')
fig
```
### Cumulative Cases By Age
```{r}
#https://occovid19.ochealthinfo.com/coronavirus-in-oc
Age<-c("0-17","18-24","25-34","35-44","45-54","55-64","65-74","74-84","85+")
Percentage_Age<-c(52,257,507,407,499,451,280,167,122)
AgeRate<-as.data.frame(Age)
AgeRate<-cbind(AgeRate,Percentage_Age)
```
```{r}
AgeRate %>%
plot_ly(labels=~Age,
values=~Percentage_Age,
marker = list(color = mycolors)) %>%
add_pie(hole=0.4)%>%
layout(xaxis = list(zeroline = F,
showline = F,
showticklabels = F,
showgrid = F),
yaxis = list(zeroline = F,
showline = F,
showticklabels = F,
showgrid = F))
```
Map
==============================
```{r}
# find total # of failures
orangeData <- read.csv("~/Documents/CP101/4Assignment/Assignment 3/Orange_Geo.csv", header = T)
mycolor <- colorNumeric(palette = 'RdBu',
domain = c(1:700),
reverse = T)
orangeData%>%
leaflet() %>%
addProviderTiles('CartoDB') %>%
addMarkers(lng = -117.853104,
lat = 33.787914,
popup = ~paste0("Orange County, CA"))%>%
addCircleMarkers(radius = ~Total_Cases*0.1,
color = ~mycolor(Total_Cases),
popup = ~paste0(City,
"
",
"Total Confirmed:",
Total_Cases)) %>%
addLegend(pal = mycolor,
values=c(1:700),
opacity=0.75,
title="Total Confirmed Cases",
position = "topright")%>%
setView(lng = -117.853104, lat = 33.787914,
zoom = 11)
```
CasesInCites
==================================
```{r}
theurl2 <- getURL("https://occovid19.ochealthinfo.com/coronavirus-in-oc",.opts = list(ssl.verifypeer = FALSE) )
tables1 <- readHTMLTable(theurl2,header=TRUE,stringsAsFactors = FALSE)
tables1 <- list.clean(tables1, fun = is.null, recursive = FALSE)
```
```{r}
citiesOrange<-tables1[[1]]
#delete last row
citiesOrange1<- citiesOrange[-nrow(citiesOrange),]
#change column names
names(citiesOrange1)[3] <- "Total_Cases"
#char to numeric
citiesOrange1$Total_Cases <- as.numeric(citiesOrange1$Total_Cases)
citiesOrange1$POPULATION1 <- as.numeric(citiesOrange1$POPULATION1)
```
```{r}
#citiesOrange1
```
```{r}
fig3 <- plot_ly(citiesOrange1, x = ~CITY, y = ~Total_Cases, type = 'bar', name = 'Cases', color=rainbow(length(citiesOrange1$POPULATION1)))
fig3 <- fig3 %>% add_trace(y = ~POPULATION1, name = 'PopRate')
fig3 <- fig3 %>% layout(yaxis = list(title = 'Count'), barmode = 'group')
fig3 <- fig3 %>% layout(showlegend = FALSE)
fig3
```
```{r}
rpivotTable(citiesOrange1,
aggregatorName = "Count",
cols = "Total_Cases",
rows = "CITY",
rendererName = "Heatmap")
```
DataTable
==============================
```{r}
datatable(data2,
caption = "County in CA",
rownames = T,
filter= "top",
options = list(pageLength = 25)
)
```
Resources {data-orientation=rows}
============================================
## Row 2
### Resources
```{r}
valueBox("Data", icon = "fa-ship", color="rgb(100,100,100)")
```
Row
-----------------------
| Data Set | From | Link |
| :------------- |:------------- | :----- |
| Covid19 in Counties,CA | The California Health and Human Services Agency (CHHS) | https://data.chhs.ca.gov/dataset/6882c390-b2d7-4b9a-aefa-2068cee63e47/resource/6cd8d424-dfaa-4bdd-9410-a3d656e1176e/download/covid19data.csv |
| Covid19 in Age,Orange | OCgov.com | https://occovid19.ochealthinfo.com/coronavirus-in-oc |
| Covid19 in Cities,Orange | OCgov.com | https://occovid19.ochealthinfo.com/coronavirus-in-oc |
| Covid19 Race and Ethnicity Data | California Department of Health | https://www.cdph.ca.gov/Programs/CID/DCDC/Pages/COVID-19/Race-Ethnicity.aspx# |
About
================================
CP101
Instructor: Karen Chapple
GSI: Manuel Santana Palacios
Created by: Huiqing Fu
Spring 2020
05/16/2020
UC Berkeley