其他
检索疫情数据的R包来了!
安装
在R里跑下面这句,包就安装好了。
remotes::install_github("GuangchuangYu/nCov2019")
使用起来相当容易,小白也会用,看完就知道了,再菜的鸟也必须会用。
初印象
library(nCov2019)
x <- get_nCov2019()
加载包之后,用一条语句,拿到当前最新的数据,每天都可以跑一下,拿到最新的数据。
打印一下你拿到的数据,它会显示中国确诊的人数,以及这个数据的更新时间:
> x
China (total confirmed cases): 14489
last update: 2020-02-02 19:22:51
更新时间很重要,因为数字是不断在更新,比如你使用当前的数据来画图,你想在图上加个时间注释,为了让这事变得更容易,nCov2019
包提供了time
方法,返回数据更新时间:
> time(x)
[1] "2020-02-02 19:22:51"
数据源来自于腾讯,如果你想在线访问,使用open(x)
,它会打开浏览器,直接到达页面:
各省数据
只需要用x[]
,就能拿到全国的数据,不带下标,返回全国,这时候,你应该可以猜到带下标可以访问到各省市了。
> x[]
name confirm suspect dead heal
1 湖北 9074 0 294 221
2 浙江 661 0 0 23
3 广东 632 0 0 12
4 河南 493 0 2 5
5 湖南 463 0 0 12
6 安徽 340 0 0 6
7 江西 333 0 0 10
8 重庆 275 0 1 7
9 江苏 236 0 0 6
10 四川 231 0 1 4
11 山东 230 0 0 5
12 北京 191 0 1 9
13 上海 182 0 1 10
14 福建 159 0 0 0
15 陕西 116 0 0 0
16 广西 111 0 0 2
17 云南 105 0 0 2
18 河北 104 0 1 6
19 黑龙江 95 0 2 2
20 辽宁 69 0 0 1
21 海南 64 0 1 4
22 山西 56 0 0 2
23 天津 48 0 0 0
24 甘肃 40 0 0 0
25 贵州 38 0 0 2
26 宁夏 28 0 0 0
27 内蒙古 27 0 0 1
28 吉林 23 0 0 1
29 新疆 21 0 0 0
30 香港 14 0 0 0
31 青海 11 0 0 0
32 台湾 10 0 0 0
33 澳门 8 0 0 0
34 西藏 1 0 0 0
比如说湖北省:
> x[1,]
name confirm suspect dead heal
1 武汉 4109 0 224 144
2 黄冈 1002 0 15 27
3 孝感 749 0 14 2
4 襄阳 441 0 0 0
5 随州 384 0 3 3
6 宜昌 353 0 1 0
7 荆州 333 0 4 1
8 荆门 329 0 7 3
9 鄂州 278 0 13 0
10 黄石 252 0 2 1
11 咸宁 246 0 0 1
12 十堰 212 0 0 0
13 仙桃 140 0 3 0
14 恩施州 105 0 0 1
15 天门 99 0 7 0
16 潜江 35 0 1 0
17 神农架 7 0 0 2
18 地区待确认 0 0 0 36
你使用中文名字也可以,比如说访问广东的数据:
> x['广东', ]
name confirm suspect dead heal
1 深圳 207 0 0 5
2 广州 179 0 0 1
3 珠海 47 0 0 1
4 佛山 43 0 0 1
5 东莞 27 0 0 0
6 惠州 23 0 0 1
7 中山 21 0 0 0
8 汕头 15 0 0 0
9 湛江 14 0 0 1
10 阳江 10 0 0 0
11 梅州 7 0 0 0
12 肇庆 7 0 0 1
13 揭阳 6 0 0 0
14 清远 6 0 0 1
15 韶关 5 0 0 0
16 汕尾 4 0 0 0
17 潮州 4 0 0 0
18 茂名 3 0 0 0
19 江门 3 0 0 0
20 河源 1 0 0 0
随手就可以画一图:
library(forcats)
library(ggplot2)
d = x['广东',]
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 suspect dead heal
1 湖北 1921 0 45 55
2 浙江 62 0 0 9
3 广东 97 0 0 0
4 河南 71 0 0 2
5 湖南 73 0 0 4
6 安徽 43 0 0 1
7 江西 47 0 0 1
8 重庆 20 0 0 4
9 江苏 34 0 0 1
10 四川 24 0 0 1
再比如湖北新增:
> x['湖北', by = "today"]
name confirm suspect dead heal
1 武汉 894 0 32 38
2 黄冈 276 0 1 10
3 孝感 121 0 2 0
4 襄阳 94 0 0 0
5 随州 80 0 2 3
6 宜昌 77 0 0 0
7 荆州 46 0 0 0
8 荆门 78 0 2 2
9 鄂州 51 0 4 0
10 黄石 43 0 0 1
11 咸宁 40 0 0 0
12 十堰 35 0 0 0
13 仙桃 43 0 2 0
14 恩施州 18 0 0 1
15 天门 17 0 0 0
16 潜江 8 0 0 0
17 神农架 0 0 0 0
18 地区待确认 0 0 0 0
全球数据
也是一样的使用,把下标改为global
即可:
> x['global',]
name confirm suspect dead heal
1 中国 14489 0 304 353
2 日本 20 0 0 1
3 泰国 19 0 0 7
4 新加坡 18 0 0 0
5 韩国 15 0 0 0
6 澳大利亚 12 0 0 2
7 美国 8 0 0 0
8 马来西亚 8 0 0 0
9 德国 8 0 0 0
10 越南 7 0 0 0
11 法国 6 0 0 0
12 阿联酋 5 0 0 0
13 加拿大 4 0 0 0
14 菲律宾 2 0 1 0
15 印度 2 0 0 0
16 意大利 2 0 0 0
17 英国 2 0 0 0
18 俄罗斯 2 0 0 0
19 尼泊尔 1 0 0 0
20 斯里兰卡 1 0 0 1
21 芬兰 1 0 0 0
22 柬埔寨 1 0 0 0
23 瑞典 1 0 0 0
每日数据
由于使用下标被我设计为访问各地的数据,那么要访问中国每日的统计数据,就得用别的方法,于是我定义了summary
,你只要一summary
就出来:
> summary(x)
date confirm suspect dead heal
1 01.13 41 0 1 0
2 01.14 41 0 1 0
3 01.15 41 0 2 5
4 01.16 45 0 2 8
5 01.17 62 0 2 12
6 01.18 198 0 3 17
7 01.19 275 0 4 18
8 01.20 291 54 6 25
9 01.21 440 37 9 25
10 01.22 571 393 17 25
11 01.23 830 1072 25 34
12 01.24 1287 1965 41 38
13 01.25 1975 2684 56 49
14 01.26 2744 5794 80 51
15 01.27 4515 6973 106 60
16 01.28 5974 9239 132 103
17 01.29 7711 12167 170 124
18 01.30 9692 15238 213 171
19 01.31 11791 17988 259 243
20 02.01 14380 19544 304 328
如果想要每日新增呢,一样的,by="today"
就行:
> summary(x, by='today')
date confirm suspect dead heal
1 01.20 77 27 0 0
2 01.21 149 53 3 0
3 01.22 131 257 8 0
4 01.23 259 680 8 6
5 01.24 444 1118 16 3
6 01.25 688 1309 15 11
7 01.26 769 3806 24 2
8 01.27 1771 2077 26 9
9 01.28 1459 3248 26 43
10 01.29 1737 4148 38 21
11 01.30 1982 4812 43 47
12 01.31 2102 5019 46 72
13 02.01 2590 4562 45 85
随手又可以来一图:
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)))
往期精彩