코로나바이러스(CoV)는 호흡기 질환을 일으키는 바이러스로써 사스, 메르스 바이러스와 유사한 형태의 바이로스로 분류됩니다. 이전에 발견되지 않은 신종 바이러스로써 2019년 말부터 중국의 우한시를 중심으로 퍼지기 시작했습니다.

Part I— Quickstart

우선 다음 명령어들을 통해 필요한 라이브러리를 불러옵니다.

> 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

Global Data

글로벌 데이터를 조회하려면 다음 코드를 실행합니다: 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

Provincial & City Data in China

해당 데이터셋은 중국에서 제공되기 때문에, 중국의 지역별 상황을 확인할 수 있게 해 줍니다.

> 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)

Daily Data

이제까지의 자료들은 모두 누적 데이터였는데, 새로 추가되는 케이스에 대한 자료를 조회하고 싶을 경우, 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 of Daily Data

누적요약 자료를 뽑기 위해서는 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 — Historical Data

Part II 에서는 그날그날의 발생 이력 데이터를 분석하려고 합니다.

> y <- load_nCov2019(lang='en')
> y
## China (total confirmed cases): 81262
## last update: 2020-03-19 17:06:27

Historical Data for China

> 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 컬럼입니다.

Provincial & City Details in China

특정 성을 인수로 넣어서 해당 지역의 상세 정보를 뽑을 수 있습니다.

> 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)

Summary Results of China

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()

Part III— Map Plotting

World Map

세계지도를 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")

China Map

plot() 함수 내에 region = ‘china' 인자값을 추가하여 중국 내의 지역명을 좀 더 상세하게 파악할 수 있습니다. 지역명의 글자 크기로는 font.size=2 정도를 할당하여 적당히 표현이 되도록 해 봤습니다.

plot(x, region='china', chinamap=cn, font.size=2)

여기까지가 준비된 자료의 끝입니다. 원문을 제공해 주신 Dr. Yu 에게 감사하고 원문의 중국어를 영문으로 번역해 주신 Patrick Tung 님에게도 감사 드립니다.