코로나바이러스(CoV)는 호흡기 질환을 일으키는 바이러스로써 사스, 메르스 바이러스와 유사한 형태의 바이로스로 분류됩니다. 이전에 발견되지 않은 신종 바이러스로써 2019년 말부터 중국의 우한시를 중심으로 퍼지기 시작했습니다.
우선 다음 명령어들을 통해 필요한 라이브러리를 불러옵니다.
> remotes::install_github("GuangchuangYu/nCov2019")
> library(nCov2019)
> x <- get_nCov2019(lang='en')
영어로 데이터를 불러 오기 위해서 lang='en' 구문을 써야 하며, 이 명령이 누락될 경우, 중국어로 데이터를 가져오게 됩니다. 참고로, 이 데이터셋은 텐센트의 https://news.qq.com/zt2020/page/feiyan.htm에서 제공되고 있습니다.
> x
## China (total confirmed cases): 81262
## last update: 2020-03-19 17:06:27
글로벌 데이터를 조회하려면 다음 코드를 실행합니다: x['global', ]
> x['global', ]
## name confirm suspect dead deadRate showRate
## 1 China 81262 105 3250 4.00 FALSE
## 2 Italy 35713 0 2978 8.34 FALSE
## 3 Iran 17361 0 1135 6.54 FALSE
## 4 Spain 14769 0 638 4.32 FALSE
## 5 Germany 12327 0 28 0.23 FALSE
## 6 United States 9370 0 152 1.62 FALSE
## 7 France 9134 0 264 2.89 FALSE
## 8 South Korea 8565 0 92 1.07 FALSE
## 9 Switzerland 3115 0 21 0.67 FALSE
## 10 United Kingdom 2626 0 104 3.96 FALSE
## 11 Netherlands 2051 0 58 2.83 FALSE
## 12 Austria 1646 0 4 0.24 FALSE
## 13 Norway 1589 0 6 0.38 FALSE
## 14 Belgium 1486 0 14 0.94 FALSE
## 15 Sweden 1292 0 10 0.77 FALSE
## 16 Denmark 1117 0 4 0.36 FALSE
## 17 Japan 924 0 32 3.46 FALSE
## 18 Malaysia 900 0 2 0.22 FALSE
## 19 Canada 727 0 9 1.24 FALSE
## 20 Diamond Princess 712 0 7 0.98 FALSE
## 21 Portugal 642 0 2 0.31 FALSE
## 22 Australia 636 0 6 0.94 FALSE
## 23 Israel 529 0 0 0 FALSE
## 24 Czech Republic 522 0 0 0 FALSE
## 25 Brazil 514 0 4 0.78 FALSE
## 26 Qatar 452 0 0 0 FALSE
## 27 Greece 418 0 5 1.2 FALSE
## 28 Ireland 366 0 2 0.55 FALSE
## 29 Finland 359 0 0 0 FALSE
## 30 Singapore 313 0 0 0 FALSE
## 31 Pakistan 307 0 2 0.65 FALSE
## 32 Poland 287 0 5 1.74 FALSE
## 33 Thailand 272 0 1 0.37 FALSE
## 34 Estonia 258 0 0 0 FALSE
## 35 Bahrain 256 0 1 0.39 FALSE
## 36 Slovenia 253 0 1 0.4 FALSE
## 37 Iceland 250 0 0 0 FALSE
## 38 Saudi Arabia 238 0 0 0 FALSE
## 39 Chile 238 0 0 0 FALSE
## 40 Indonesia 227 0 19 8.37 FALSE
## 41 Philippines 217 0 17 7.83 FALSE
## 42 Egypt 210 0 6 2.86 FALSE
## 43 Luxembourg 203 0 2 0.99 FALSE
## 44 Turkey 191 0 2 1.05 FALSE
## 45 Ecuador 168 0 2 1.19 FALSE
## 46 Iraq 164 0 12 7.32 FALSE
## 47 Romania 158 0 0 0 FALSE
## 48 India 151 0 3 1.99 FALSE
## 49 Kuwait 148 0 0 0 FALSE
## 50 Russia 147 0 1 0.68 FALSE
## 51 Peru 145 0 0 0 FALSE
## 52 Lebanon 133 0 3 2.26 FALSE
## 53 Mexico 118 0 0 0 FALSE
## 54 South Africa 116 0 0 0 FALSE
## 55 Armenia 115 0 0 0 FALSE
## 56 United Arab Emirates 113 0 0 0 FALSE
## 57 San Marino 109 0 14 12.84 FALSE
## 58 Slovakia 105 0 1 0.95 FALSE
## 59 Colombia 102 0 0 0 FALSE
## 60 Argentina 97 0 2 2.06 FALSE
## 61 Bulgaria 92 0 2 2.17 FALSE
## 62 Serbia 89 0 0 0 FALSE
## 63 Panama 86 0 1 1.16 FALSE
## 64 Croatia 81 0 0 0 FALSE
## 65 Uruguay 79 0 0 0 FALSE
## 66 Vietnam 76 0 0 0 FALSE
## 67 Algeria 75 0 7 9.33 FALSE
## 68 Latvia 71 0 0 0 FALSE
## 69 Costa Rica 69 0 1 1.45 FALSE
## 70 Brunei 68 0 0 0 FALSE
## 71 Hungary 58 0 1 1.72 FALSE
## 72 Cyprus 58 0 0 0 FALSE
## 73 Jordan 57 0 0 0 FALSE
## 74 Albania 55 0 1 1.82 FALSE
## 75 Andorra 54 0 0 0 FALSE
## 76 Morocco 54 0 2 3.7 FALSE
## 77 Belarus 51 0 0 0 FALSE
## 78 Sri Lanka 50 0 0 0 FALSE
## 79 Malta 48 0 0 0 FALSE
## 80 Kazakhstan 44 0 0 0 FALSE
## 81 Palestinian Territory 44 0 0 0 FALSE
## 82 Republika Severna Makedonija 43 0 0 0 FALSE
## 83 Gambia 40 0 0 0 FALSE
## 84 Oman 39 0 0 0 FALSE
## 85 Bosnia and Herzegovina 38 0 0 0 FALSE
## 86 Cambodia 37 0 0 0 FALSE
## 87 Venezuela 36 0 0 0 FALSE
## 88 Moldova 36 0 1 2.78 FALSE
## 89 Senegal 36 0 0 0 FALSE
## 90 Lithuania 33 0 0 0 FALSE
## 91 New Zealand 28 0 0 0 FALSE
## 92 Azerbaijan 28 0 1 3.57 FALSE
## 93 Tunisia 27 0 0 0 FALSE
## 94 Burkina Faso 27 0 1 3.7 FALSE
## 95 Uzbekistan 23 0 0 0 FALSE
## 96 Afghanistan 22 0 0 0 FALSE
## 97 Dominican Republic 21 0 1 4.76 FALSE
## 98 <NA> 19 0 0 0 FALSE
## 99 Bangladesh 17 0 1 5.88 FALSE
## 100 Ukraine 16 0 2 12.5 FALSE
## 101 Democratic Republic of the Congo 14 0 0 0 FALSE
## 102 Cameroon 13 0 0 0 FALSE
## 103 Maldives 13 0 0 0 FALSE
## 104 Paraguay 11 0 0 0 FALSE
## 105 Rwanda 11 0 0 0 FALSE
## 106 Monaco 9 0 0 0 FALSE
## 107 Nigeria 8 0 0 0 FALSE
## 108 Honduras 8 0 0 0 FALSE
## 109 Ghana 7 0 0 0 FALSE
## 110 Kenya 7 0 0 0 FALSE
## 111 Guyana 7 0 1 14.29 FALSE
## 112 Côte d'Ivoire 6 0 0 0 FALSE
## 113 Ethiopia 6 0 0 0 FALSE
## 114 Mongolia 6 0 0 0 FALSE
## 115 Puerto Rico 5 0 0 0 FALSE
## 116 Equatorial Guinea 4 0 0 0 FALSE
## 117 Seychelles 4 0 0 0 FALSE
## 118 Mauritius 3 0 0 0 FALSE
## 119 Tanzania 3 0 0 0 FALSE
## 120 Kyrgyzstan 3 0 0 0 FALSE
## 121 Republic of the Congo 3 0 0 0 FALSE
## 122 Gabon 3 0 0 0 FALSE
## 123 <NA> 2 0 0 0 FALSE
## 124 Montenegro 2 0 0 0 FALSE
## 125 Zambia 2 0 0 0 FALSE
## 126 Sudan 2 0 1 50 FALSE
## 127 Guatemala 2 0 1 50 FALSE
## 128 <NA> 2 0 0 0 FALSE
## 129 Liberia 2 0 0 0 FALSE
## 130 Namibia 2 0 0 0 FALSE
## 131 Togo 1 0 0 0 FALSE
## 132 <NA> 1 0 0 0 FALSE
## 133 Bhutan 1 0 0 0 FALSE
## 134 Benin 1 0 0 0 FALSE
## 135 Somalia 1 0 0 0 FALSE
## 136 <NA> 1 0 0 0 FALSE
## 137 Gambia 1 0 0 0 FALSE
## 138 Holy See [Vatican City State] 1 0 0 0 FALSE
## 139 Nicaragua 1 0 0 0 FALSE
## 140 Nepal 1 0 0 0 FALSE
## 141 Swaziland 1 0 0 0 FALSE
## 142 Guinea 1 0 0 0 FALSE
## 143 Djibouti 1 0 0 0 FALSE
## heal healRate showHeal
## 1 70548 86.82 TRUE
## 2 4025 11.27 FALSE
## 3 5710 32.89 FALSE
## 4 1081 7.32 FALSE
## 5 135 1.1 FALSE
## 6 106 1.13 FALSE
## 7 602 6.59 FALSE
## 8 1947 22.73 FALSE
## 9 4 0.13 FALSE
## 10 65 2.48 FALSE
## 11 0 0 FALSE
## 12 9 0.55 FALSE
## 13 1 0.06 FALSE
## 14 1 0.07 FALSE
## 15 15 1.16 FALSE
## 16 1 0.09 FALSE
## 17 135 14.61 FALSE
## 18 75 8.33 FALSE
## 19 12 1.65 FALSE
## 20 527 74.02 FALSE
## 21 4 0.62 FALSE
## 22 27 4.25 FALSE
## 23 28 5.29 FALSE
## 24 3 0.57 FALSE
## 25 0 0 FALSE
## 26 4 0.88 FALSE
## 27 14 3.35 FALSE
## 28 0 0 FALSE
## 29 10 2.79 FALSE
## 30 114 36.42 FALSE
## 31 13 4.23 FALSE
## 32 13 4.53 FALSE
## 33 42 15.44 FALSE
## 34 0 0 FALSE
## 35 81 31.64 FALSE
## 36 0 0 FALSE
## 37 2 0.8 FALSE
## 38 6 2.52 FALSE
## 39 0 0 FALSE
## 40 8 3.52 FALSE
## 41 8 3.69 FALSE
## 42 26 12.38 FALSE
## 43 0 0 FALSE
## 44 0 0 FALSE
## 45 0 0 FALSE
## 46 43 26.22 FALSE
## 47 7 4.43 FALSE
## 48 13 8.61 FALSE
## 49 18 12.16 FALSE
## 50 8 5.44 FALSE
## 51 0 0 FALSE
## 52 1 0.75 FALSE
## 53 4 3.39 FALSE
## 54 1 0.86 FALSE
## 55 1 0.87 FALSE
## 56 26 23.01 FALSE
## 57 2 1.83 FALSE
## 58 0 0 FALSE
## 59 1 0.98 FALSE
## 60 3 3.09 FALSE
## 61 0 0 FALSE
## 62 0 0 FALSE
## 63 0 0 FALSE
## 64 4 4.94 FALSE
## 65 0 0 FALSE
## 66 16 21.05 FALSE
## 67 32 42.67 FALSE
## 68 1 1.41 FALSE
## 69 0 0 FALSE
## 70 0 0 FALSE
## 71 2 3.45 FALSE
## 72 0 0 FALSE
## 73 1 1.75 FALSE
## 74 0 0 FALSE
## 75 1 1.85 FALSE
## 76 1 1.85 FALSE
## 77 5 9.8 FALSE
## 78 1 2 FALSE
## 79 2 4.17 FALSE
## 80 0 0 FALSE
## 81 0 0 FALSE
## 82 1 2.33 FALSE
## 83 1 2.5 FALSE
## 84 13 33.33 FALSE
## 85 0 0 FALSE
## 86 1 2.7 FALSE
## 87 0 0 FALSE
## 88 1 2.78 FALSE
## 89 2 5.56 FALSE
## 90 0 0 FALSE
## 91 0 0 FALSE
## 92 7 25 FALSE
## 93 0 0 FALSE
## 94 0 0 FALSE
## 95 0 0 FALSE
## 96 0 0 FALSE
## 97 0 0 FALSE
## 98 0 0 FALSE
## 99 3 17.65 FALSE
## 100 0 0 FALSE
## 101 0 0 FALSE
## 102 2 15.38 FALSE
## 103 0 0 FALSE
## 104 0 0 FALSE
## 105 0 0 FALSE
## 106 0 0 FALSE
## 107 1 12.5 FALSE
## 108 0 0 FALSE
## 109 0 0 FALSE
## 110 0 0 FALSE
## 111 0 0 FALSE
## 112 1 16.67 FALSE
## 113 0 0 FALSE
## 114 0 0 FALSE
## 115 0 0 FALSE
## 116 0 0 FALSE
## 117 0 0 FALSE
## 118 0 0 FALSE
## 119 0 0 FALSE
## 120 0 0 FALSE
## 121 0 0 FALSE
## 122 0 0 FALSE
## 123 0 0 FALSE
## 124 0 0 FALSE
## 125 0 0 FALSE
## 126 0 0 FALSE
## 127 0 0 FALSE
## 128 0 0 FALSE
## 129 0 0 FALSE
## 130 0 0 FALSE
## 131 0 0 FALSE
## 132 0 0 FALSE
## 133 0 0 FALSE
## 134 0 0 FALSE
## 135 0 0 FALSE
## 136 0 0 FALSE
## 137 0 0 FALSE
## 138 0 0 FALSE
## 139 0 0 FALSE
## 140 1 100 FALSE
## 141 0 0 FALSE
## 142 0 0 FALSE
## 143 0 0 FALSE
해당 데이터셋은 중국에서 제공되기 때문에, 중국의 지역별 상황을 확인할 수 있게 해 줍니다.
> x[]
## name confirm suspect dead deadRate showRate heal healRate
## 1 Hubei 67800 0 3130 4.62 FALSE 57678 85.07
## 2 Guangdong 1378 0 8 0.58 FALSE 1318 95.65
## 3 Henan 1273 0 22 1.73 FALSE 1250 98.19
## 4 Zhejiang 1233 0 1 0.08 FALSE 1217 98.70
## 5 Hunan 1018 0 4 0.39 FALSE 1014 99.61
## 6 Anhui 990 0 6 0.61 FALSE 984 99.39
## 7 Jiangxi 935 0 1 0.11 FALSE 934 99.89
## 8 Shandong 761 0 7 0.92 FALSE 747 98.16
## 9 Jiangsu 631 0 0 0.00 FALSE 631 100.00
## 10 Chongqing 576 0 6 1.04 FALSE 570 98.96
## 11 Sichuan 540 0 3 0.56 FALSE 531 98.33
## 12 Heilongjiang 483 0 13 2.69 FALSE 460 95.24
## 13 Beijing 480 0 8 1.67 FALSE 380 79.17
## 14 Shanghai 363 0 3 0.83 FALSE 326 89.81
## 15 Hebei 318 0 6 1.89 FALSE 310 97.48
## 16 Fujian 296 0 1 0.34 FALSE 295 99.66
## 17 Guangxi 253 0 2 0.79 FALSE 250 98.81
## 18 Shaanxi 246 0 3 1.22 FALSE 237 96.34
## 19 Hong Kong 208 0 4 1.92 FALSE 95 45.67
## 20 Yunnan 176 0 2 1.14 FALSE 172 97.73
## 21 Hainan 168 0 6 3.57 FALSE 161 95.83
## 22 Guizhou 146 0 2 1.37 FALSE 144 98.63
## 23 Tianjin 136 0 3 2.21 FALSE 133 97.79
## 24 Gansu 133 0 2 1.50 FALSE 91 68.42
## 25 Shanxi 133 0 0 0.00 FALSE 133 100.00
## 26 Liaoning 125 0 1 0.80 FALSE 122 97.60
## 27 Taiwan 108 0 1 0.93 FALSE 22 20.37
## 28 Jilin 93 0 1 1.08 FALSE 92 98.92
## 29 Xinjiang 76 0 3 3.95 FALSE 73 96.05
## 30 Ningxia 75 0 0 0.00 FALSE 75 100.00
## 31 Inner Mongolia 75 0 1 1.33 FALSE 74 98.67
## 32 Qinghai 18 0 0 0.00 FALSE 18 100.00
## 33 Macau 17 0 0 0.00 FALSE 10 58.82
## 34 Tibet 1 0 0 0.00 FALSE 1 100.00
## showHeal
## 1 TRUE
## 2 TRUE
## 3 TRUE
## 4 TRUE
## 5 TRUE
## 6 TRUE
## 7 TRUE
## 8 TRUE
## 9 TRUE
## 10 TRUE
## 11 TRUE
## 12 TRUE
## 13 TRUE
## 14 TRUE
## 15 TRUE
## 16 TRUE
## 17 TRUE
## 18 TRUE
## 19 TRUE
## 20 TRUE
## 21 TRUE
## 22 TRUE
## 23 TRUE
## 24 TRUE
## 25 TRUE
## 26 TRUE
## 27 TRUE
## 28 TRUE
## 29 TRUE
## 30 TRUE
## 31 TRUE
## 32 TRUE
## 33 TRUE
## 34 TRUE
특정 지역의 상세지역을 파악하려면 지역을 조회하여 해당 지역의 도시별 상황을 추려낼 수 있습니다. 예를 들어, 후베이성을 조회하면 다음과 같은 결과가 도출됩니다.
> x['Hubei', ] # replace Hubei with any province
## name confirm suspect dead deadRate showRate heal healRate showHeal
## 1 Wuhan 50005 0 2496 4.99 FALSE 40765 81.52 TRUE
## 2 Xiaogan 3518 0 128 3.64 FALSE 3321 94.40 TRUE
## 3 Huanggang 2907 0 125 4.30 FALSE 2782 95.70 TRUE
## 4 Jingzhou 1580 0 50 3.16 FALSE 1502 95.06 TRUE
## 5 Ezhou 1394 0 58 4.16 FALSE 1298 93.11 TRUE
## 6 Suizhou 1307 0 45 3.44 FALSE 1226 93.80 TRUE
## 7 Xiangyang 1175 0 39 3.32 FALSE 1131 96.26 TRUE
## 8 Huangshi 1015 0 38 3.74 FALSE 964 94.98 TRUE
## 9 Yichang 931 0 36 3.87 FALSE 882 94.74 TRUE
## 10 Jingmen 928 0 39 4.20 FALSE 871 93.86 TRUE
## 11 Xianning 836 0 15 1.79 FALSE 821 98.21 TRUE
## 12 Shiyan 672 0 8 1.19 FALSE 655 97.47 TRUE
## 13 Xiantao 575 0 22 3.83 FALSE 538 93.57 TRUE
## 14 Tianmen 496 0 15 3.02 FALSE 479 96.57 TRUE
## 15 Enshi 252 0 7 2.78 FALSE 245 97.22 TRUE
## 16 Qianjiang 198 0 9 4.55 FALSE 187 94.44 TRUE
## 17 Shennongjia 11 0 0 0.00 FALSE 11 100.00 TRUE
Data Visualization도 가능한데, 예를 들어 안휘성의 예는 다음과 같이 도식화해서 보여줍니다.
library(forcats)
library(ggplot2)
d = x['Anhui',] # replace Anhui with any province
d$confirm=as.numeric(d$confirm)
d$name = fct_reorder(d$name, d$confirm)
ggplot(d, aes(name, confirm)) +
geom_col(fill='steelblue') + coord_flip() +
geom_text(aes(y = confirm+2, label=confirm), hjust=0) +
theme_minimal(base_size=14) +
scale_y_continuous(expand=c(0,10)) +
xlab(NULL) + ylab(NULL)
이제까지의 자료들은 모두 누적 데이터였는데, 새로 추가되는 케이스에 대한 자료를 조회하고 싶을 경우, by='today'와 같은 인자값을 추가함으로써 처리가 가능합니다.
> head(x[by='today'], 10)
## name confirm confirmCuts isUpdated
## 1 Hubei 0 0 TRUE
## 2 Guangdong 9 0 TRUE
## 3 Henan 0 0 TRUE
## 4 Zhejiang 1 0 TRUE
## 5 Hunan 0 0 TRUE
## 6 Anhui 0 0 TRUE
## 7 Jiangxi 0 0 FALSE
## 8 Shandong 0 0 TRUE
## 9 Jiangsu 0 0 FALSE
## 10 Chongqing 0 0 TRUE
## tip
## 1
## 2 <U+5E7F><U+4E1C><U+7701><U+7D2F><U+8BA1><U+62A5><U+544A><U+5883><U+5916><U+8F93><U+5165><U+75C5><U+4F8B>28<U+4F8B><U+3002>
## 3 <U+6CB3><U+5357><U+7D2F><U+8BA1><U+62A5><U+544A>1<U+4F8B><U+5883><U+5916><U+8F93><U+5165><U+578B><U+75C5><U+4F8B><U+3002>
## 4 <U+676D><U+5DDE><U+5883><U+5916><U+8F93><U+5165><U+75C5><U+4F8B>2<U+4F8B>,<U+6E56><U+5DDE><U+5883><U+5916><U+8F93><U+5165><U+75C5><U+4F8B>2<U+4F8B>,<U+4E3D><U+6C34><U+5883><U+5916><U+8F93><U+5165><U+75C5><U+4F8B>12<U+4F8B><U+3002>
## 5
## 6
## 7
## 8 <U+5C71><U+4E1C><U+7D2F><U+8BA1><U+62A5><U+544A><U+5883><U+5916><U+8F93><U+5165><U+786E><U+8BCA><U+75C5><U+4F8B>2<U+4F8B><U+3002>
## 9
## 10
이 경우에도 특정 지역의 상세정보를 파악할 수 있습니다.
> x['Hubei', by='today'] # replace Hubei with any province
## name confirm confirmCuts isUpdated
## 1 Wuhan 0 0 TRUE
## 2 Xiaogan 0 0 TRUE
## 3 Huanggang 0 0 TRUE
## 4 Jingzhou 0 0 TRUE
## 5 Ezhou 0 0 TRUE
## 6 Suizhou 0 0 TRUE
## 7 Xiangyang 0 0 TRUE
## 8 Huangshi 0 0 TRUE
## 9 Yichang 0 0 TRUE
## 10 Jingmen 0 0 TRUE
## 11 Xianning 0 0 TRUE
## 12 Shiyan 0 0 TRUE
## 13 Xiantao 0 0 TRUE
## 14 Tianmen 0 0 TRUE
## 15 Enshi 0 0 TRUE
## 16 Qianjiang 0 0 FALSE
## 17 Shennongjia 0 0 TRUE
누적요약 자료를 뽑기 위해서는 summary 함수를 사용하면 됩니다.
> summary(x)
## confirm suspect dead heal nowConfirm nowSevere importedCase deadRate
## 1 41 0 1 0 0 0 0 2.4
## 2 41 0 1 0 0 0 0 2.4
## 3 41 0 2 5 0 0 0 4.9
## 4 45 0 2 8 0 0 0 4.4
## 5 62 0 2 12 0 0 0 3.2
## 6 198 0 3 17 0 0 0 1.5
## 7 275 0 4 18 0 0 0 1.5
## 8 291 54 6 25 291 0 0 2.1
## 9 440 37 9 25 431 0 0 2.0
## 10 574 393 17 25 557 0 0 3.0
## 11 835 1072 25 34 776 0 0 3.0
## 12 1297 1965 41 38 1218 0 0 3.2
## 13 1985 2684 56 49 1880 324 0 2.8
## 14 2761 5794 80 51 2630 461 0 2.9
## 15 4535 6973 106 60 4369 976 0 2.3
## 16 5997 9239 132 103 5762 1239 0 2.2
## 17 7736 12167 170 124 7442 1370 0 2.2
## 18 9720 15238 213 171 9336 1527 0 2.2
## 19 11821 17988 259 243 11319 1795 0 2.2
## 20 14411 19544 304 328 13779 2110 0 2.1
## 21 17238 21558 361 475 16402 2296 0 2.1
## 22 20471 23214 425 632 19414 2788 0 2.1
## 23 24363 23260 491 892 22980 3219 0 2.0
## 24 28060 24702 564 1153 26343 3859 0 2.0
## 25 31211 26359 637 1542 29032 4821 0 2.0
## 26 34598 27657 723 2052 31823 6101 0 2.1
## 27 37251 28942 812 2651 33788 6188 0 2.2
## 28 40235 23589 909 3283 36043 6484 0 2.3
## 29 42708 21675 1017 3998 37693 7333 0 2.4
## 30 44730 16067 1114 4742 38874 8204 0 2.5
## 31 59882 13435 1368 5915 52599 8030 0 2.3
## 32 63932 10109 1381 6728 55823 10204 0 2.2
## 33 66576 8969 1524 8101 56951 11053 0 2.3
## 34 68584 8228 1666 9425 57493 11272 0 2.4
## 35 70635 7264 1772 10853 58010 10644 0 2.5
## 36 72528 6242 1870 12561 58097 11741 0 2.6
## 37 74279 5248 2006 14387 57886 11977 0 2.7
## 38 75002 4922 2121 16157 56386 11864 0 2.8
## 39 75993 5206 2239 18266 55051 11633 0 2.9
## 40 76392 5365 2348 20673 53371 11477 0 3.1
## 41 77041 4148 2445 22907 51689 10968 0 3.2
## 42 77262 3434 2595 24757 49910 9915 0 3.4
## 43 77779 2824 2666 27353 47760 9126 0 3.4
## 44 78190 2491 2718 29775 45697 8752 0 3.5
## 45 78630 2358 2747 32531 43352 8346 0 3.5
## 46 78959 2308 2791 36157 40011 7952 0 3.5
## 47 79389 1418 2838 39049 37502 7664 0 3.6
## 48 79968 851 2873 41675 35420 7365 0 3.6
## 49 80174 715 2915 44518 32741 7110 0 3.6
## 50 80302 587 2946 47260 30096 6806 0 3.7
## 51 80422 520 2984 49914 27524 6416 0 3.7
## 52 80565 522 3015 52109 25441 5952 20 3.7
## 53 80710 482 3045 53793 23872 5737 36 3.8
## 54 80813 502 3073 55477 22263 5489 60 3.8
## 55 80859 458 3100 57143 20616 5264 63 3.8
## 56 80904 421 3123 58684 19097 5111 67 3.9
## 57 80924 349 3140 59982 17802 4794 69 3.9
## 58 80955 285 3162 61567 16226 4492 79 3.9
## 59 80992 253 3173 62887 14920 4257 85 3.9
## 60 81003 147 3180 64216 13607 4020 88 3.9
## 61 81021 115 3194 65649 12178 3610 95 3.9
## 62 81048 113 3204 67022 10822 3226 111 4.0
## 63 81077 134 3218 67863 9996 3032 123 4.0
## 64 81116 128 3231 68799 9086 2830 143 4.0
## 65 81151 119 3242 69725 8184 2622 155 4.0
## 66 81235 105 3250 70547 7438 2314 189 4.0
## healRate date
## 1 0.0 01.13
## 2 0.0 01.14
## 3 12.2 01.15
## 4 17.8 01.16
## 5 19.4 01.17
## 6 8.6 01.18
## 7 6.5 01.19
## 8 8.6 01.20
## 9 5.7 01.21
## 10 4.4 01.22
## 11 4.1 01.23
## 12 2.9 01.24
## 13 2.5 01.25
## 14 1.8 01.26
## 15 1.3 01.27
## 16 1.7 01.28
## 17 1.6 01.29
## 18 1.8 01.30
## 19 2.1 01.31
## 20 2.3 02.01
## 21 2.8 02.02
## 22 3.1 02.03
## 23 3.7 02.04
## 24 4.1 02.05
## 25 4.9 02.06
## 26 5.9 02.07
## 27 7.1 02.08
## 28 8.2 02.09
## 29 9.4 02.10
## 30 10.6 02.11
## 31 9.9 02.12
## 32 10.5 02.13
## 33 12.2 02.14
## 34 13.7 02.15
## 35 15.4 02.16
## 36 17.3 02.17
## 37 19.4 02.18
## 38 21.5 02.19
## 39 24.0 02.20
## 40 27.1 02.21
## 41 29.7 02.22
## 42 32.0 02.23
## 43 35.2 02.24
## 44 38.1 02.25
## 45 41.4 02.26
## 46 45.8 02.27
## 47 49.2 02.28
## 48 52.1 02.29
## 49 55.5 03.01
## 50 58.9 03.02
## 51 62.1 03.03
## 52 64.7 03.04
## 53 66.6 03.05
## 54 68.6 03.06
## 55 70.7 03.07
## 56 72.5 03.08
## 57 74.1 03.09
## 58 76.1 03.10
## 59 77.6 03.11
## 60 79.3 03.12
## 61 81.0 03.13
## 62 82.7 03.14
## 63 83.7 03.15
## 64 84.8 03.16
## 65 85.9 03.17
## 66 86.8 03.18
여기에도 by='today'와 같은 인자값을 추가할 수 있습니다.
> summary(x, by="today")
## confirm suspect dead heal importedCase deadRate healRate date
## 1 77 27 0 0 0 0.0 0.0 01.20
## 2 149 53 3 0 0 2.0 0.0 01.21
## 3 131 257 8 0 0 6.1 0.0 01.22
## 4 259 680 8 6 0 3.1 2.3 01.23
## 5 444 1118 16 3 0 3.6 0.7 01.24
## 6 688 1309 15 11 0 2.2 1.6 01.25
## 7 769 3806 24 2 0 3.1 0.3 01.26
## 8 1771 2077 26 9 0 1.5 0.5 01.27
## 9 1459 3248 26 43 0 1.8 2.9 01.28
## 10 1737 4148 38 21 0 2.2 1.2 01.29
## 11 1982 4812 43 47 0 2.2 2.4 01.30
## 12 2102 5019 46 72 0 2.2 3.4 01.31
## 13 2590 4562 45 85 0 1.7 3.3 02.01
## 14 2829 5173 57 147 0 2.0 5.2 02.02
## 15 3235 5072 64 157 0 2.0 4.9 02.03
## 16 3893 3971 65 262 0 1.7 6.7 02.04
## 17 3697 5328 73 261 0 2.0 7.1 02.05
## 18 3143 4833 73 387 0 2.3 12.3 02.06
## 19 3401 4214 86 510 0 2.5 15.0 02.07
## 20 2656 3916 89 600 0 3.4 22.6 02.08
## 21 3062 4008 97 632 0 3.2 20.6 02.09
## 22 2484 3536 108 716 0 4.3 28.8 02.10
## 23 2022 3342 97 744 0 4.8 36.8 02.11
## 24 15153 2807 254 1173 0 1.7 7.7 02.12
## 25 5093 2450 121 1083 0 2.4 21.3 02.13
## 26 2644 2277 143 1373 0 5.4 51.9 02.14
## 27 2009 1918 142 1324 0 7.1 65.9 02.15
## 28 2051 1563 105 1425 0 5.1 69.5 02.16
## 29 1891 1432 98 1701 0 5.2 90.0 02.17
## 30 1751 1185 136 1826 0 7.8 104.3 02.18
## 31 820 1277 115 1781 0 14.0 217.2 02.19
## 32 892 1614 118 2109 0 13.2 236.4 02.20
## 33 399 1361 109 2394 0 27.3 600.0 02.21
## 34 649 882 97 2235 0 14.9 344.4 02.22
## 35 416 620 150 1850 0 36.1 444.7 02.23
## 36 517 530 71 2596 0 13.7 502.1 02.24
## 37 411 439 52 2422 0 12.7 589.3 02.25
## 38 440 508 29 2756 0 6.6 626.4 02.26
## 39 329 452 44 3626 0 13.4 1102.1 02.27
## 40 430 248 47 2892 0 10.9 672.6 02.28
## 41 579 132 35 2626 0 6.0 453.5 02.29
## 42 206 141 42 2843 0 20.4 1380.1 03.01
## 43 128 129 31 2742 0 24.2 2142.2 03.02
## 44 120 143 38 2654 0 31.7 2211.7 03.03
## 45 143 143 31 2195 2 21.7 1535.0 03.04
## 46 145 102 30 1684 16 20.7 1161.4 03.05
## 47 103 99 28 1684 24 27.2 1635.0 03.06
## 48 46 84 27 1666 3 58.7 3621.7 03.07
## 49 45 60 23 1541 4 51.1 3424.4 03.08
## 50 20 36 17 1298 2 85.0 6490.0 03.09
## 51 31 31 22 1585 10 71.0 5112.9 03.10
## 52 25 33 11 1320 6 44.0 5280.0 03.11
## 53 11 33 7 1329 3 63.6 12081.8 03.12
## 54 18 17 14 1433 7 77.8 7961.1 03.13
## 55 27 39 10 1373 16 37.0 5085.2 03.14
## 56 29 41 14 841 12 48.3 2900.0 03.15
## 57 39 45 13 936 20 33.3 2400.0 03.16
## 58 35 21 11 926 12 31.4 2645.7 03.17
## 59 84 23 8 822 34 9.5 978.6 03.18
아래와 같이 visualization을 할 수도 있지요.
library(ggplot2)
ggplot(summary(x), aes(as.Date(date, "%m.%d"), as.numeric(confirm))) +
geom_col(fill='firebrick') + theme_minimal(base_size = 14) +
xlab(NULL) + ylab(NULL) +
labs(caption = paste("accessed date:", time(x)))
Part II 에서는 그날그날의 발생 이력 데이터를 분석하려고 합니다.
> y <- load_nCov2019(lang='en')
> y
## China (total confirmed cases): 81262
## last update: 2020-03-19 17:06:27
> head(y[][c(1:6, 7:7)])
## time province city cum_confirm cum_heal cum_dead suspected
## 1 2019-12-01 Hubei Wuhan 1 0 0 0
## 2 2019-12-02 Hubei Wuhan 1 0 0 0
## 3 2019-12-03 Hubei Wuhan 1 0 0 0
## 4 2019-12-04 Hubei Wuhan 1 0 0 0
## 5 2019-12-05 Hubei Wuhan 1 0 0 0
## 6 2019-12-06 Hubei Wuhan 1 0 0 0
우리가 관심있는 데이터는 누적 데이터 및 신규로 추가되는 데이터입니다. 컬럼 기준으로는, time, province, city, cum_confirm, cum_heal, cum_dead, suspected 컬럼입니다.
특정 성을 인수로 넣어서 해당 지역의 상세 정보를 뽑을 수 있습니다.
> head(y['Hubei', c(1:6, 7:7)]) # replace Hubei with any province
## name confirm suspect dead deadRate showRate heal
## 1 Wuhan 50005 0 2496 4.99 FALSE 40765
## 2 Xiaogan 3518 0 128 3.64 FALSE 3321
## 3 Huanggang 2907 0 125 4.30 FALSE 2782
## 4 Jingzhou 1580 0 50 3.16 FALSE 1502
## 5 Ezhou 1394 0 58 4.16 FALSE 1298
## 6 Suizhou 1307 0 45 3.44 FALSE 1226
city 매개변수를 활용하여, 특정 성 내의 도시 단위로 세분화해서 정보를 뽑을 수도 있습니다.
> head(subset(y['Hubei',], city == "Wuhan"))[c(1:6, 7:7)]
## time province city cum_confirm cum_heal cum_dead suspected
## 1 2019-12-01 Hubei Wuhan 1 0 0 0
## 2 2019-12-02 Hubei Wuhan 1 0 0 0
## 3 2019-12-03 Hubei Wuhan 1 0 0 0
## 4 2019-12-04 Hubei Wuhan 1 0 0 0
## 5 2019-12-05 Hubei Wuhan 1 0 0 0
## 6 2019-12-06 Hubei Wuhan 1 0 0 0
이에 대한 Visualization은 다음과 같은 예가 있습니다.
library(ggplot2)
require(ggrepel)
## Loading required package: ggrepel
d <- y['Anhui',] # replace Anhui with any province
ggplot(d, aes(time, as.numeric(cum_confirm), group=city, color=city)) +
geom_point() + geom_line() +
geom_text_repel(aes(label=city), data=d[d$time == time(y), ], hjust=1) +
theme_minimal(base_size = 14) + theme(legend.position='none') +
xlab(NULL) + ylab(NULL)
get_nCov2019()의 경우와 마찬가지로, summary() 함수를 호출할 수 있습니다.
> head(summary(y)[,1:5])
## time province cum_confirm cum_heal cum_dead
## 1 2019-12-01 Hubei 1 0 0
## 2 2019-12-02 Hubei 1 0 0
## 3 2019-12-03 Hubei 1 0 0
## 4 2019-12-04 Hubei 1 0 0
## 5 2019-12-05 Hubei 1 0 0
## 6 2019-12-06 Hubei 1 0 0
이 경우에도, 특정 성 또는 도시를 추가하거나 그에 상응하는 visualization 으로 도식화하여 표현할 수 있습니다.
> summary(y, 'Hubei')[,1:5]
## time province cum_confirm cum_heal cum_dead
## 1 2019-12-01 Hubei 1 0 0
## 2 2019-12-02 Hubei 1 0 0
## 3 2019-12-03 Hubei 1 0 0
## 4 2019-12-04 Hubei 1 0 0
## 5 2019-12-05 Hubei 1 0 0
## 6 2019-12-06 Hubei 1 0 0
## 7 2019-12-07 Hubei 1 0 0
## 8 2019-12-08 Hubei 1 0 0
## 9 2019-12-09 Hubei 1 0 0
## 10 2019-12-10 Hubei 1 0 0
## 11 2019-12-11 Hubei 4 0 0
## 12 2019-12-12 Hubei 4 0 0
## 13 2019-12-13 Hubei 4 0 0
## 14 2019-12-14 Hubei 4 0 0
## 15 2019-12-15 Hubei 6 0 0
## 16 2019-12-16 Hubei 6 0 0
## 17 2019-12-17 Hubei 7 0 0
## 18 2019-12-18 Hubei 8 0 0
## 19 2019-12-19 Hubei 9 0 0
## 20 2019-12-20 Hubei 14 0 0
## 21 2019-12-21 Hubei 18 0 0
## 22 2019-12-22 Hubei 21 0 0
## 23 2019-12-23 Hubei 29 0 0
## 24 2019-12-24 Hubei 30 0 0
## 25 2019-12-25 Hubei 33 0 0
## 26 2019-12-26 Hubei 35 0 0
## 27 2019-12-27 Hubei 37 0 0
## 28 2019-12-28 Hubei 37 0 0
## 29 2019-12-29 Hubei 37 0 0
## 30 2019-12-30 Hubei 37 0 0
## 31 2019-12-31 Hubei 40 0 0
## 32 2020-01-01 Hubei 43 0 0
## 33 2020-01-02 Hubei 44 0 0
## 34 2020-01-03 Hubei 44 0 0
## 35 2020-01-04 Hubei 44 0 0
## 36 2020-01-05 Hubei 44 0 0
## 37 2020-01-06 Hubei 44 0 0
## 38 2020-01-07 Hubei 44 0 0
## 39 2020-01-08 Hubei 44 0 0
## 40 2020-01-09 Hubei 44 0 0
## 41 2020-01-10 Hubei 44 2 1
## 42 2020-01-11 Hubei 44 6 1
## 43 2020-01-12 Hubei 44 7 1
## 44 2020-01-13 Hubei 44 7 1
## 45 2020-01-14 Hubei 44 7 1
## 46 2020-01-15 Hubei 44 12 2
## 47 2020-01-16 Hubei 45 15 2
## 48 2020-01-17 Hubei 62 19 2
## 49 2020-01-18 Hubei 121 24 3
## 51 2020-01-19 Hubei 198 25 3
## 66 2020-01-20 Hubei 270 25 6
## 85 2020-01-21 Hubei 375 28 9
## 106 2020-01-22 Hubei 444 28 17
## 138 2020-01-23 Hubei 549 31 24
## 171 2020-01-24 Hubei 729 32 39
## 204 2020-01-25 Hubei 1052 42 52
## 238 2020-01-26 Hubei 1423 44 76
## 271 2020-01-27 Hubei 2714 47 100
## 305 2020-01-28 Hubei 3554 80 125
## 340 2020-01-29 Hubei 4586 90 162
## 373 2020-01-30 Hubei 5806 116 204
## 407 2020-01-31 Hubei 7153 166 249
## 441 2020-02-01 Hubei 9074 215 294
## 475 2020-02-02 Hubei 11177 295 350
## 510 2020-02-03 Hubei 13522 396 414
## 544 2020-02-04 Hubei 16678 520 479
## 578 2020-02-05 Hubei 19665 633 549
## 612 2020-02-06 Hubei 22112 817 618
## 641 2020-02-07 Hubei 24953 1115 699
## 675 2020-02-08 Hubei 27013 1439 780
## 709 2020-02-09 Hubei 29631 1795 871
## 743 2020-02-10 Hubei 31728 2222 974
## 777 2020-02-11 Hubei 33366 2639 1068
## 811 2020-02-12 Hubei 47163 3172 1202
## 845 2020-02-13 Hubei 51986 3862 1318
## 879 2020-02-14 Hubei 54406 4774 1457
## 913 2020-02-15 Hubei 56249 5623 1596
## 947 2020-02-16 Hubei 58182 6639 1696
## 981 2020-02-17 Hubei 59989 7862 1789
## 1015 2020-02-18 Hubei 61682 9128 1921
## 1049 2020-02-19 Hubei 62457 10337 2029
## 1083 2020-02-20 Hubei 63088 11788 2144
## 1117 2020-02-21 Hubei 63454 13557 2250
## 1151 2020-02-22 Hubei 63889 15299 2346
## 1185 2020-02-23 Hubei 64287 16738 2495
## 1219 2020-02-24 Hubei 64786 18854 2563
## 1253 2020-02-25 Hubei 65187 20912 2615
## 1287 2020-02-26 Hubei 65596 23200 2641
## 1321 2020-02-27 Hubei 65914 26403 2682
## 1350 2020-02-28 Hubei 66337 28895 2727
## 1384 2020-02-29 Hubei 66907 31187 2761
## 1418 2020-03-01 Hubei 67103 33757 2803
## 1452 2020-03-02 Hubei 67217 36167 2834
## 1486 2020-03-03 Hubei 67217 36200 2835
## 1520 2020-03-04 Hubei 67466 40479 2902
## 1554 2020-03-05 Hubei 67466 40578 2902
## 1588 2020-03-06 Hubei 67666 43468 2959
## 1622 2020-03-07 Hubei 67707 45011 2986
## 1656 2020-03-08 Hubei 67743 46433 3007
## 1690 2020-03-09 Hubei 67760 47585 3024
## 1724 2020-03-10 Hubei 67773 49056 3046
## 1758 2020-03-11 Hubei 67781 50298 3056
## 1792 2020-03-12 Hubei 67781 50316 3056
## 1826 2020-03-13 Hubei 67786 51564 3062
## 1860 2020-03-14 Hubei 67794 54278 3085
## 1894 2020-03-15 Hubei 67798 55094 3099
## 1928 2020-03-16 Hubei 67799 55987 3111
## 1962 2020-03-17 Hubei 67799 56005 3111
## 1996 2020-03-18 Hubei 67800 56886 3122
ggplot(summary(y, 'Hubei'), aes(time, as.numeric(cum_confirm))) +
geom_col()
# or city-specific
# ggplot(subset(x['Hubei',], city == "Huanggang"), aes(time, as.numeric(cum_confirm))) + geom_col()
세계지도를 plotting하는 것은 아래처럼 간단하게 3줄의 코딩만으로 가능합니다.
> require(nCov2019)
> x = get_nCov2019(lang='en')
> plot(x)
현재 시각 2018-03-06 17:45:00 기준으로 접근한 데이터셋으로는 전세계적으로 위의 지도상에 나타나는 것과 같은 확진자 분포도를 확인할 수 있습니다. 중국의 각 지역별 분포를 좀 더 상세하게 보고 싶다면, 먼저 chinamap 패키지를 설치해야 합니다.
> remotes::install_github("GuangchuangYu/chinamap")
이 패키지를 설치한 이후에는 아래와 같은 코드를 작성하여 중국 내의 각 성별로 확진자 분포도를 확인할 수 있습니다.
require(chinamap)
cn = get_map_china()
## translate province
cn$province <- trans_province(cn$province)
plot(x, chinamap=cn)
아래와 같이 색상톤을 조절할 수도 있습니다.
plot(x, chinamap=cn, palette="Purples")
plot() 함수 내에 region = ‘china' 인자값을 추가하여 중국 내의 지역명을 좀 더 상세하게 파악할 수 있습니다. 지역명의 글자 크기로는 font.size=2 정도를 할당하여 적당히 표현이 되도록 해 봤습니다.
plot(x, region='china', chinamap=cn, font.size=2)
여기까지가 준비된 자료의 끝입니다. 원문을 제공해 주신 Dr. Yu 에게 감사하고 원문의 중국어를 영문으로 번역해 주신 Patrick Tung 님에게도 감사 드립니다.