你知道哪个国家每百万人中的新冠肺炎确诊人数最多么?

你知道哪个国家每百万人中的新冠肺炎确诊人数最多么?

国内的疫情基本已经结束了,我们再把视角放到国外看看最近国外疫情的发展状况吧!

首先我们导入下面的分析中需要的一些 R 包:

1
pacman::p_load(readxl, tidyverse, ggplot2, lubridate, scales, tidyr, purrr, ggrepel)

把确诊数据读进来处理下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
read_csv('time_series_19-covid-Confirmed.csv') %>% 
gather(5:ncol(.), key = "date", value = "confirmed") %>%
set_names(c("prov", "country", "lat",
"lon", "date", "confirmed")) %>%
mutate(country = case_when(
country == "Taiwan*" ~ "China",
country == "US" ~ "United States",
T ~ country
)) %>%
group_by(country, date) %>%
summarise(confirmed = sum(confirmed)) %>%
ungroup() %>%
distinct() %>%
mutate(date = mdy(date)) -> df

df 是这样的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

截止到 3 月 18 号的全球确诊总数为:

1
2
3
4
current_total <- subset(df, date == ymd("2020-03-18")) %>% pull(confirmed) %>% sum()
current_total

## [1] 214910

下面就是绘图部分了。首先绘制一幅折线图展示各国疫情发展的趋势:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

中国的确诊数量实在是太多了,而且中国的疫情已经基本结束了,所以我们把中国的去掉看看:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

由于各国人口数量差异巨大,所以直接比较确诊人数是不合理的,所以我们可以比较下每百万人中的确诊人数,人口数据来源于世界银行:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

popdf 是这样的:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

读入世界地图数据(后面我画了张地图):

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

我还给大家准备了一份 iso.csv 数据,是一份国家名称和 ISO(三位)代码的对照表,通过 ISO 代码合并 df、popdf、worldmap 三份数据集可以确保 100% 合并成功,下面是合并和计算每百万人中的确诊人数:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

再绘图展示,因为国家很多,所以下面我只展示了确诊人数超过 500 人的一些国家:

代码去哪了?

代码可以加入我的知识星球后从知识星球下载附件获取~
要了解如何加入我的知识星球,可以阅读关于界面或者添加我的微信咨询。

绘制地图就可以展示全部的国家了(这里只展示了 3 月 18 号的数据):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
worldmap %>% 
left_join(
casePerMillion %>%
dplyr::filter(date == "2020-03-18"),
by = "id"
) %>%
select(name, date, confirmed, casePerMillion, geometry) %>%
mutate(casePerMillion = if_else(is.na(casePerMillion), 0, casePerMillion)) %>%
mutate(
casePerMillion = cut(casePerMillion,
breaks = c(0, 1, 10, 100, 500, 1000, 10000),
labels = c("0 ~ 1", "1 ~ 10", "10 ~ 100", "100 ~ 500", "500 ~ 1000", "> 1000"),
include.lowest = TRUE)
) %>%
dplyr::filter(!is.na(name)) %>%
ggplot() +
geom_sf(aes(fill = casePerMillion, geometry = geometry),
size = 0.1, color = "white") +
theme_modern_rc(base_family = enfont,
caption_family = enfont,
subtitle_family = enfont) +
scale_fill_viridis_d(option = "inferno",
name = "Cases / Million") +
coord_sf(crs = "+proj=eck4") +
worldtilegrid::theme_enhance_wtg() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank()) +
labs(title = "Cases of COVID-19 per million of population",
subtitle = "TidyFriday Project",
caption = "Data Source: John Hopkins University\n<https://github.com/CSSEGISandData/COVID-19>")

除此之外,我还在附件中提供了 time_series_19-covid-Recovered.csvtime_series_19-covid-Deaths.csv 数据集,分别是治愈和死亡数据,大家感兴趣的话也可以自己分析下。

知识星球附件链接:https://t.zsxq.com/Am2FaaU

#

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×