코로나 19로 인한 사망자 데이터를 COVerAGE-DB: A database of COVID-19 cases and deaths by age 데이터가 공개되어 코로나19로 인한 사망에 대한 데이터가 공개 되어 있으며, COVerAGE-DB - R 팩키지가 있어 바로 데이터를 분석할 수 있도록 실시간으로 정보를 제공하고 있다.
코로나 19 백신 접종자수에 대한 데이터는 Our World in Data 에서 COVID-19 Dataset by Our World in Data GitHub 저장소를 통해 획득할 수 있다.
코로나 19로 인한 사망자와 코로나 백신 접종자수 두 데이터를 교차함으로써 백신에 대한 효과를 파악할 수 있다.
코로나 19 백신 접종자수에 대한 데이터를 COVID-19 Dataset by Our World in Data GitHub 저장소에서 바로 가져온다.
library(tidyverse)
library(countrycode)
library(lubridate)
library(extrafont)
loadfonts()
download.file(url = "https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/vaccinations/vaccinations.csv",
destfile = "data/vaccinations.csv")
read_csv("data/vaccinations.csv",
vaccine <-col_types= "ccDddddddddd")
vaccine %>%
vaccine_tbl <- mutate(ISO2 = countrycode(iso_code,
origin = 'iso3c',
destination = 'iso2c')) %>%
select(location,
ISO2,
date,
total_vaccinations,
people_vaccinated,
people_fully_vaccinated,%>%
daily_vaccinations_raw) # filter(str_detect(ISO2, "KR|JP|US|GB")) %>%
filter(str_detect(ISO2, "KR|JP|TW|GB|US")) %>%
group_by(ISO2) %>%
arrange(date) %>%
mutate(total_vaccinations = zoo::na.locf(total_vaccinations)) %>%
select(date, ISO2, country = location, vaccinations = total_vaccinations) %>%
ungroup()
%>%
vaccine_tbl reactable::reactable()
COVerAGE-DB - R 팩키지에서 상기 주요 5개국에 대한 사망자 데이터를 다운로드 한다.
# remotes::install_github("eshom/covid-age-data")
library(covidAgeData)
# inputDB <- download_covid("inputDB", progress = TRUE)
read_csv("inputDB.zip",
inputDB <-skip = 1,
col_types = "cccccciccdc")
subset_covid(inputDB,
death_tbl <-Country = c("South Korea", "USA", "Japan", "United Kingdom", "Taiwan"),
Region = "All") %>%
# 변수명과 자료형 작업
as_tibble() %>%
janitor::clean_names(.) %>%
mutate(date = dmy(date)) %>%
# 분석에 필수 변수만 추리는 작업
select(date, country, measure, value) %>%
# 변수 가독성 향상 작업
mutate(measure = ifelse(measure == "Cases", "확진", "사망")) %>%
filter(measure == "사망") %>%
mutate(ISO2 = countrycode(country, origin = 'country.name', destination = 'iso2c')) %>%
select(date, ISO2, country, death = value)
death_tbl
# A tibble: 16,583 x 4
date ISO2 country death
<date> <chr> <chr> <dbl>
1 2020-02-13 JP Japan 0
2 2020-02-13 JP Japan 0
3 2020-02-13 JP Japan 0
4 2020-02-13 JP Japan 0
5 2020-02-13 JP Japan 0
6 2020-02-13 JP Japan 0
7 2020-02-13 JP Japan 0
8 2020-02-13 JP Japan 0
9 2020-02-13 JP Japan 1
10 2020-02-13 JP Japan 0
# ... with 16,573 more rows
코로나19 사망자수와 백신 접종자수를 주요 5개국을 기준으로 결합시켜 후속 시각화와 데이터 분석을 위해 준비한다.
left_join(death_tbl, vaccine_tbl, by = c("ISO2", "date", "country")) %>%
merge_tbl <- mutate(country_kor = case_when(str_detect(country, "Korea") ~ "한국",
str_detect(country, "United States") ~ "미국",
str_detect(country, "United Kingdom") ~ "영국",
str_detect(country, "Japan") ~ "일본",
str_detect(country, "Taiwan") ~ "대만"))
merge_tbl
# A tibble: 16,583 x 6
date ISO2 country death vaccinations country_kor
<date> <chr> <chr> <dbl> <dbl> <chr>
1 2020-02-13 JP Japan 0 NA 일본
2 2020-02-13 JP Japan 0 NA 일본
3 2020-02-13 JP Japan 0 NA 일본
4 2020-02-13 JP Japan 0 NA 일본
5 2020-02-13 JP Japan 0 NA 일본
6 2020-02-13 JP Japan 0 NA 일본
7 2020-02-13 JP Japan 0 NA 일본
8 2020-02-13 JP Japan 0 NA 일본
9 2020-02-13 JP Japan 1 NA 일본
10 2020-02-13 JP Japan 0 NA 일본
# ... with 16,573 more rows
library(gganimate)
%>%
merge_tbl count(country)
# A tibble: 5 x 2
country n
<chr> <int>
1 Japan 6204
2 South Korea 5896
3 Taiwan 973
4 United Kingdom 1134
5 USA 2376
merge_tbl %>%
vaccine_g <- filter(date >= lubridate::ymd("2021-01-01")) %>%
ggplot(aes(x = date, y = vaccinations, color = country, group = country)) +
geom_line() +
geom_point() +
geom_text(aes(label = country, family = "NanumGothic"), hjust = -0.3, size = 3.5) +
scale_y_continuous(labels = scales::comma) +
scale_x_date(date_labels = "%y-%m-%d") +
theme_bw(base_family = "NanumGothic") +
labs(title = "코로나19 일별 접종자수",
x = "",
y = "백신 접종자수",
color = "국가") +
theme(legend.position = "top")
vaccine_g
library(gganimate)
+ transition_reveal(along = date) vaccine_g
데이터 과학자 이광춘 저작
kwangchun.lee.7@gmail.com