library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v dplyr   1.0.7
## v tidyr   1.1.4     v stringr 1.4.0
## v readr   2.1.1     v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
library(dygraphs)
library(xts)
## 필요한 패키지를 로딩중입니다: zoo
## 
## 다음의 패키지를 부착합니다: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## 다음의 패키지를 부착합니다: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
library(ggplot2)
library(plotly)
## 
## 다음의 패키지를 부착합니다: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout

확진자 시계열

read.csv("../Data/corona/인천광역시_코로나19 확진자 현황_20210731.csv") -> confirmed_case

as.Date(confirmed_case$확진일) -> confirmed_case$확진일
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_count
confirmed_count = xts(confirmed_count$확진자수, order.by = confirmed_count$확진일)

dygraph(confirmed_count) %>% dyRangeSelector()

성별 시계열

## 남녀별로
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(성별 == "남") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_male
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(성별 == "여") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_female

confirmed_male = xts(confirmed_male$확진자수, order.by = confirmed_male$확진일)
confirmed_female = xts(confirmed_female$확진자수, order.by = confirmed_female$확진일)

confirm_gender = cbind(confirmed_male, confirmed_female)

dygraph(confirm_gender) %>% dyRangeSelector()

성별 누적 확진자

confirmed_case %>% group_by(관리기관, 성별) %>% summarise(확진자수 = n()) %>% 
    ggplot(aes(관리기관, 확진자수, fill = 성별)) + geom_bar(stat = "identity", position="dodge", colour="black") +
    scale_fill_brewer(palette="Pastel1") + ylab("확진자 수 (단위:명)") -> gh_corona_gender
## `summarise()` has grouped output by '관리기관'. You can override using the `.groups` argument.
ggplotly(gh_corona_gender)

지역별로 시계열

confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "강화군") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_a
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "계양구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_b
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "기타(공항 등)") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_c
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "남동구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_d
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "동구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_e
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "미추홀구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_f
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "부평구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_g
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "서구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_h
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "연수구") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_i
confirmed_case %>% select(관리기관, 확진일, 성별, 나이) %>% filter(관리기관 == "옹진군") %>% group_by(확진일) %>% summarise(확진자수 = n()) -> confirmed_j

confirmed_a = xts(confirmed_a$확진자수, order.by = confirmed_a$확진일)
confirmed_b = xts(confirmed_b$확진자수, order.by = confirmed_b$확진일)
confirmed_c = xts(confirmed_c$확진자수, order.by = confirmed_c$확진일)
confirmed_d = xts(confirmed_d$확진자수, order.by = confirmed_d$확진일)
confirmed_e = xts(confirmed_e$확진자수, order.by = confirmed_e$확진일)
confirmed_f = xts(confirmed_f$확진자수, order.by = confirmed_f$확진일)
confirmed_g = xts(confirmed_g$확진자수, order.by = confirmed_g$확진일)
confirmed_h = xts(confirmed_h$확진자수, order.by = confirmed_h$확진일)
confirmed_i = xts(confirmed_i$확진자수, order.by = confirmed_i$확진일)
confirmed_j = xts(confirmed_j$확진자수, order.by = confirmed_j$확진일)

confirm_state = cbind(confirmed_a, confirmed_b, confirmed_c, confirmed_d, confirmed_e, confirmed_f, confirmed_g, confirmed_h, confirmed_i, confirmed_j)

dygraph(confirm_state) %>% dyRangeSelector()

연령대별 누적 확진자

confirmed_case %>% mutate(연령대=ifelse(나이<10, "0~10세", 
                                 ifelse(나이<20, "10대",
                                 ifelse(나이<30, "20대", 
                                 ifelse(나이<40, "30대",
                                 ifelse(나이<50, "40대",
                                 ifelse(나이<60, "50대",
                                 ifelse(나이<70, "60대",
                                 ifelse(나이<80, "70대", "80대 이상"))))))))) %>% 
                mutate(연령대=factor(연령대, levels = c("0~10세", "10대", "20대", "30대", "40대", "50대", "60대", "70대", "80대 이상"))) -> confirmed_case

confirmed_case %>% group_by(연령대, 성별) %>% summarise(확진자수 = n()) %>% 
    ggplot(aes(연령대, 확진자수, fill = 성별)) + geom_bar(stat = "identity", position="dodge", colour="black") +
    scale_fill_brewer(palette="Pastel1") + ylab("확진자 수 (단위:명)") -> gh_corona_ageg
## `summarise()` has grouped output by '연령대'. You can override using the `.groups` argument.
ggplotly(gh_corona_ageg)