Must Learning With Statistics

[R ggplot2 시각화] 대한민국 코로나 데이터 시각화 본문

R Code

[R ggplot2 시각화] 대한민국 코로나 데이터 시각화

Doublek Park 2020. 2. 22. 17:52
마침 kaggle에 대한민국 코로나 데이터가 올라왔기에, 이를 통해 시각화를 해보도록 하겠습니다. 20200222_코로나시각화.utf8.md

 이번 포스팅은 대한민국 코로나 바이러스 확진자 데이터를 이용한 시각화를 진행해보도록 하겠습니다. 데이터는 다음 링크에서 받으시면 됩니다.

데이터 다운로드 링크: https://www.kaggle.com/kimdanny/covid19-in-south-korea

1. 데이터 불러오기 및 패키지 로딩

dates confirmed deaths recovered
1/22/20 1 0 0
1/23/20 1 0 0
1/24/20 2 0 0
1/25/20 2 0 0
1/26/20 3 0 0
1/27/20 4 0 0

데이터 셋은 다음과 같습니다. 날짜, 확진자 수, 사망자 수, 완치자 수가 기록되어 있는 간단한 데이터입니다.

2. 데이터 정리 및 추가

 날짜 데이터는 바로 ’Date’타입으로 변경시켜주도록 하겠습니다. 날짜 포맷만 잘 맞추어주면 되는 간단한 작업입니다.

'data.frame':   30 obs. of  4 variables:
 $ dates    : Date, format: "2020-01-22" "2020-01-23" ...
 $ confirmed: int  1 1 2 2 3 4 4 4 4 11 ...
 $ deaths   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ recovered: int  0 0 0 0 0 0 0 0 0 0 ...

날짜데이터를 기반으로 요일 데이터 및 주중, 주말을 나타내는 변수도 만들어보도록 하겠습니다.

dates confirmed deaths recovered day Weekend
2020-01-22 1 0 0 Weekdays
2020-01-23 1 0 0 Weekdays
2020-01-24 2 0 0 Weekdays
2020-01-25 2 0 0 Weekend
2020-01-26 3 0 0 Weekend
2020-01-27 4 0 0 Weekdays

3. 시각화 1

 geom_point, geom_smooth를 활용하면 간다하게 추세선을 표현할 수가 있습니다. 먼저 그래프 시각화를 위해 wide-form 가지고 있는 현재 데이터를 long-form으로 변경시켜주어야 합니다.

dates day Weekend variable value
2020-01-22 Weekdays confirmed 1
2020-01-22 Weekdays deaths 0
2020-01-22 Weekdays recovered 0
2020-01-23 Weekdays confirmed 1
2020-01-23 Weekdays deaths 0
2020-01-23 Weekdays recovered 0

geom_point와 geom_smooth, 그리고 theme 옵션 명령어를 통해 다음과 같이 그래프를 만들 수가 있습니다. 확진자가 급등하는게 보이는군요…

4. 시각화 2

 이번에는 주중과 주말에 차이가 있는지 없는지 파악해보도록 하겠습니다.

# A tibble: 6 x 4
# Groups:   Weekend [2]
  Weekend  variable  Count    Perc
  <chr>    <fct>     <int>   <dbl>
1 Weekdays confirmed   463 0.854  
2 Weekdays recovered    78 0.144  
3 Weekdays deaths        1 0.00185
4 Weekend  confirmed   138 0.862  
5 Weekend  recovered    22 0.138  
6 Weekend  deaths        0 0      

주중과 주말의 차이점을 확인하기 위해서는 위와같이 dplyr의 group_by, summarise, mutate를 활용하여 요약값을 계산해주어야 합니다. factor명령어의 경우 확진자 -> 완치자 -> 사망자 순으로 나타날 수 있도록 순서를 조정해주기 위하여 활용하였습니다.

시각화 3

마지막으로 확진자 증가량분에 대해 시각화를 해보도록 하겠습니다. 먼저 하루가 지날 떄마닫 몇명의 확진자가 증가하였는지에 대한 값을 계산해야합니다.

 [1]  0  0  1  0  1  1  0  0  0  7  1  3  0  1  3  4  1  0  1  2  1  0  0
[24]  0  0  1  1  1  0 73

간단하게 for문을 활용하면 증가량을 계산할 수가 있습니다.

만들어진 증가량(벡터)에 대해 names를 통해 벡터의 원소들에 인덱스 이름을 정해줍니다. 이를 하는 이유는 증가량이 0보다 큰 날짜들만 뽑았을 때에 대한 인덱스값을 유지시키기 위함입니다.

한달이 되는 시점에서 확진자가 급증했습니다. 이 전염병이 하루 빨리 종식되기를 기원합니다.

Comments