Zaliczenie wysyłać na adres mariusz.bodzioch@matman.uwm.edu.pl
library(kableExtra)
library(scales)
library(lubridate)
library(ggrepel)
library(readr)
library(tidyverse)
kable1 = function(data, digits=3) data %>% kable(digits = digits) %>%
kable_styling(bootstrap_options =
c("striped", "hover", "condensed", "responsive"))
kable2 = function(data, digits=3, height="320px") data %>%
kable1(digits = digits) %>%
scroll_box(width = "100%", height = height)
Wczytać dane owid_covid_data.csv
i zapisać je w ramce
owid_covid_data
, zapoznać się z opisem zmiennych, strukturą
danych, zawartością zbioru,
owid_covid_data <- read_csv("owid_covid_data.csv", show_col_types = FALSE)
Wczytać dane excess_mortality.csv
i zapisać je w ramce
excess_mortality
, zapoznać się z opisem zmiennych,
strukturą danych, zawartością zbioru,
excess_mortality <- read_csv("excess_mortality.csv", show_col_types = FALSE)
Utworzyć ramkę continents
zawierającą nazwy wszystkich
kontynentów występujących w ramce owid_covid_data
w
kolumnie continent
(każda nazwa ma występować w ramce tylko
raz), Wskazówka: wykorzystać funkcję unique()
continents = owid_covid_data %>% filter(!is.na(continent)) %>% distinct(continent)
Utworzyć ramkę locations
zawierającą nazwy wszystkich
krajów występujących w ramce owid_covid_data
w kolumnie
location
(każda nazwa ma występować w ramce tylko raz),
Uwaga: w kolumnie location
znajdują się również nazwy
kontynentów (i nie tylko)
locations = owid_covid_data %>% filter(!is.na(continent)) %>% distinct(location)
Utworzyć ramkę eu
zawierającą nazwy krajów europejskich
(każda nazwa ma występować w ramce tylko raz),
eu = owid_covid_data %>% filter(continent == "Europe") %>% distinct(location)
Na podstawie owid_covid_data
, utworzyć ramkę
owid_covid_data_eu
zawierającą dane tylko dla krajów
europejskich (wykorzystać ramkę eu
), Wskazówka: można
wykorzystać operator %in%
owid_covid_data_eu = owid_covid_data %>% filter(location %in% eu$location)
Na podstawie excess_mortality
, utworzyć ramkę
excess_mortality_eu
zawierającą dane tylko dla krajów
europejskich,
excess_mortality_eu = excess_mortality %>% filter(location %in% eu$location)
Z ramki eu
wykluczyć Polskę i wylosować trzy kraje
(ustalić ziarno), zapisać je w zmiennej
selected_locations_eu
, Wskazówka: do losowania użyć
funkcji sample_n()
z pakietu dplyr
, a do
ustalenia ziarna - set.seed()
set.seed(20)
selected_locations_eu = eu %>% filter(location != 'Poland') %>% slice_sample(n=3)
Wylosować datę z zakresu 01.10 - 31.12.2021r., zapisać ją do zmiennej
selected_date
.
selected_date = seq(dmy('01.10.2021'), dmy('31.12.2021'), by=1) %>% sample(1)
Na podstawie owid_covid_data
, wykonać (wszystkie dane w
przeliczeniu na milion mieszkańców):
Na dzień selected_date
continent_select_date = owid_covid_data %>%
filter(date == selected_date & location %in% continents$continent) %>%
select(location, total_cases, new_cases, total_deaths, new_deaths)
continent_select_date %>% kable1()
location | total_cases | new_cases | total_deaths | new_deaths |
---|---|---|---|---|
Africa | 8496820 | 4911 | 217987 | 167 |
Asia | 79398436 | 107716 | 1172953 | 1481 |
Europe | 64847982 | 253374 | 1300144 | 3400 |
North America | 55277387 | 106484 | 1123063 | 2196 |
Oceania | 313863 | 2159 | 3699 | 37 |
South America | 38348177 | 21478 | 1169884 | 520 |
facet_grid()
, Wskazówka: zamienić ramkę na format
długicontinent_select_date %>%
pivot_longer(-location) %>%
ggplot(aes(location, value))+
geom_col()+
facet_grid(vars(name), scales="free")+
labs(
title = "Łączna i dzienne ilość zachorowań oraz łączna i dzienna ilość zgonów",
subtitle = paste("Dane na dzień ", selected_date),
caption = "M.F.",
x = "Kontynent",
y = "Wartość")
wykonać wykres punktowy zależności łącznej liczby przypadków od łącznej liczby zgonów (jeden wykres dla wszystkich krajów),
zaznaczyć etykietami kraj o największym współczynniku liczby przypadków oraz o największym współczynniku zgonów (etykiety mają zawierać nazwy krajów),
country_select_date = owid_covid_data %>%
filter(date == selected_date & location %in% locations$location)
max_total_cases_per_million = country_select_date %>%
filter(total_cases_per_million == max(total_cases_per_million, na.rm = T))
max_total_deaths_per_million = country_select_date %>%
filter(total_deaths_per_million == max(total_deaths_per_million, na.rm = T))
max_continent_total_cases_per_million = country_select_date %>%
group_by(continent) %>%
filter(total_cases_per_million == max(total_cases_per_million, na.rm = T))
max_continent_total_deaths_per_million = country_select_date %>%
group_by(continent) %>%
filter(total_deaths_per_million == max(total_deaths_per_million, na.rm = T))
country_select_date %>%
ggplot(aes(total_deaths, total_cases, label=location))+
geom_point()+
geom_label_repel(data=max_total_cases_per_million, color = "red",
nudge_x = -.5, nudge_y = .5)+
geom_label_repel(data=max_total_deaths_per_million, color = "blue",
nudge_x = .2, nudge_y = -.2)+
geom_point(data=max_total_cases_per_million, shape=21, color = "red", size=3)+
geom_point(data=max_total_deaths_per_million, shape=21, color = "blue", size=3)+
scale_x_log10(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x))) +
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x))) +
annotation_logticks()+
labs(
title = "Łączna ilość zachorowań w funkcji łącznej ilości zgonów we wszystkich krajach świata",
subtitle = paste("Dane na dzień ", selected_date),
caption = "M.F.",
x = "Łączna ilość zgonów",
y = "Łączna ilość zachorowań")
facet_wrap()
);country_select_date %>%
ggplot(aes(total_deaths, total_cases, label=location))+
geom_label_repel(data=max_continent_total_cases_per_million, color = "red",
nudge_x = -.7, nudge_y = .7)+
geom_label_repel(data=max_continent_total_deaths_per_million, color = "blue",
nudge_x = .7, nudge_y = -.7)+
geom_point(data=max_continent_total_cases_per_million, shape=21, color = "red", size=3)+
geom_point(data=max_continent_total_deaths_per_million, shape=21, color = "blue", size=3)+
geom_point()+
scale_x_log10(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x))) +
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x))) +
annotation_logticks()+
facet_wrap(vars(continent))+
labs(
title = "Łączna ilość zachorowań w funkcji łącznej ilości zgonów we wszystkich krajach świata",
subtitle = paste("Dane na dzień ", selected_date),
caption = "M.F.",
x = "Łączna ilość zgonów [log10]",
y = "Łączna ilość zachorowań [log10]")
Obliczyć średnią liczbę wykonanych dziennie szczepień w każdym kraju w okresie od 01.05.2021r. do 31.12.2021r., podsumowanie zaprezentować na wykresie pudełkowym z podziałem na kontynenty.
mean_vaccinations = owid_covid_data %>%
filter(date >= dmy('01.05.2021') &
date <= dmy('31.12.2021') &
location %in% locations$location) %>%
group_by(continent, location) %>%
summarise(mean_new_vaccinations = mean(new_vaccinations_smoothed, na.rm=T),
.groups = "keep") %>%
filter(!is.nan(mean_new_vaccinations))
mean_vaccinations %>% kable2()
continent | location | mean_new_vaccinations |
---|---|---|
Africa | Algeria | 45427.808 |
Africa | Angola | 44852.461 |
Africa | Benin | 7633.142 |
Africa | Botswana | 4940.898 |
Africa | Burkina Faso | 5284.467 |
Africa | Burundi | 108.082 |
Africa | Cameroon | 4114.820 |
Africa | Cape Verde | 2311.461 |
Africa | Central African Republic | 2254.137 |
Africa | Chad | 1579.147 |
Africa | Comoros | 2251.690 |
Africa | Congo | 2984.433 |
Africa | Cote d’Ivoire | 27023.816 |
Africa | Democratic Republic of Congo | 1249.122 |
Africa | Djibouti | 485.184 |
Africa | Egypt | 218704.763 |
Africa | Equatorial Guinea | 1551.016 |
Africa | Eswatini | 1489.355 |
Africa | Ethiopia | 40194.029 |
Africa | Gabon | 1754.661 |
Africa | Gambia | 1116.796 |
Africa | Ghana | 29413.204 |
Africa | Guinea | 11077.967 |
Africa | Guinea-Bissau | 1756.506 |
Africa | Kenya | 36514.616 |
Africa | Lesotho | 3270.820 |
Africa | Liberia | 3785.545 |
Africa | Libya | 10696.641 |
Africa | Madagascar | 3911.099 |
Africa | Malawi | 6055.465 |
Africa | Mali | 4103.604 |
Africa | Mauritania | 7671.861 |
Africa | Mauritius | 7550.898 |
Africa | Morocco | 168245.935 |
Africa | Mozambique | 58307.090 |
Africa | Namibia | 2551.331 |
Africa | Niger | 6138.298 |
Africa | Nigeria | 53194.004 |
Africa | Rwanda | 49985.294 |
Africa | Saint Helena | 97.000 |
Africa | Sao Tome and Principe | 593.833 |
Africa | Senegal | 6184.984 |
Africa | Seychelles | 240.996 |
Africa | Sierra Leone | 3462.808 |
Africa | Somalia | 5680.339 |
Africa | South Africa | 112477.220 |
Africa | South Sudan | 1127.469 |
Africa | Sudan | 13433.302 |
Africa | Tanzania | 16332.524 |
Africa | Togo | 8994.139 |
Africa | Tunisia | 47486.682 |
Africa | Uganda | 43031.971 |
Africa | Zambia | 6677.547 |
Africa | Zimbabwe | 27727.633 |
Asia | Afghanistan | 17891.849 |
Asia | Armenia | 6643.931 |
Asia | Azerbaijan | 40077.437 |
Asia | Bahrain | 8159.151 |
Asia | Bangladesh | 465187.212 |
Asia | Bhutan | 2771.118 |
Asia | Brunei | 3533.510 |
Asia | Cambodia | 115085.918 |
Asia | China | 10437883.359 |
Asia | Georgia | 9997.955 |
Asia | Hong Kong | 34886.482 |
Asia | India | 5238517.624 |
Asia | Indonesia | 1023698.465 |
Asia | Iran | 473807.131 |
Asia | Iraq | 56493.788 |
Asia | Israel | 25439.584 |
Asia | Japan | 799769.294 |
Asia | Jordan | 30180.318 |
Asia | Kazakhstan | 65889.657 |
Asia | Kuwait | 23908.494 |
Asia | Kyrgyzstan | 9033.649 |
Asia | Laos | 27967.788 |
Asia | Lebanon | 15879.012 |
Asia | Macao | 3556.282 |
Asia | Malaysia | 227990.086 |
Asia | Maldives | 1646.490 |
Asia | Mongolia | 17648.951 |
Asia | Myanmar | 136551.784 |
Asia | Nepal | 88466.469 |
Asia | Northern Cyprus | 2317.105 |
Asia | Oman | 24019.653 |
Asia | Pakistan | 618046.351 |
Asia | Palestine | 12671.122 |
Asia | Philippines | 429335.873 |
Asia | Qatar | 15125.269 |
Asia | Saudi Arabia | 169479.273 |
Asia | Singapore | 36145.351 |
Asia | South Korea | 403396.918 |
Asia | Sri Lanka | 132568.641 |
Asia | Syria | 9687.706 |
Asia | Taiwan | 140880.151 |
Asia | Tajikistan | 27812.244 |
Asia | Thailand | 420434.898 |
Asia | Timor | 4821.457 |
Asia | Turkey | 441324.592 |
Asia | Turkmenistan | 19106.000 |
Asia | United Arab Emirates | 49562.376 |
Asia | Uzbekistan | 155497.922 |
Asia | Vietnam | 604830.363 |
Asia | Yemen | 2758.864 |
Europe | Albania | 7708.567 |
Europe | Andorra | 369.882 |
Europe | Austria | 54439.935 |
Europe | Belarus | 32455.347 |
Europe | Belgium | 72701.796 |
Europe | Bosnia and Herzegovina | 6912.812 |
Europe | Bulgaria | 11886.992 |
Europe | Croatia | 15750.861 |
Europe | Cyprus | 5290.143 |
Europe | Czechia | 50418.731 |
Europe | Denmark | 41266.824 |
Europe | Estonia | 5587.567 |
Europe | Faeroe Islands | 310.082 |
Europe | Finland | 31500.767 |
Europe | France | 414868.351 |
Europe | Germany | 496330.294 |
Europe | Gibraltar | 158.767 |
Europe | Greece | 58193.127 |
Europe | Guernsey | 332.290 |
Europe | Hungary | 39204.192 |
Europe | Iceland | 2412.420 |
Europe | Ireland | 33216.886 |
Europe | Isle of Man | 431.771 |
Europe | Italy | 370988.118 |
Europe | Jersey | 507.678 |
Europe | Kosovo | 6700.661 |
Europe | Latvia | 9168.155 |
Europe | Liechtenstein | 207.959 |
Europe | Lithuania | 12922.935 |
Europe | Luxembourg | 3645.090 |
Europe | Malta | 2973.922 |
Europe | Moldova | 6658.759 |
Europe | Monaco | 169.243 |
Europe | Montenegro | 2322.510 |
Europe | Netherlands | 95246.706 |
Europe | North Macedonia | 6949.012 |
Europe | Norway | 32933.278 |
Europe | Poland | 145693.841 |
Europe | Portugal | 65210.559 |
Europe | Romania | 44010.016 |
Europe | Russia | 514895.278 |
Europe | San Marino | 114.453 |
Europe | Serbia | 19924.224 |
Europe | Slovakia | 19144.665 |
Europe | Slovenia | 8746.204 |
Europe | Spain | 278006.804 |
Europe | Sweden | 58536.743 |
Europe | Switzerland | 45094.482 |
Europe | Ukraine | 112630.424 |
Europe | United Kingdom | 345184.890 |
North America | Anguilla | 51.118 |
North America | Antigua and Barbuda | 370.751 |
North America | Aruba | 366.200 |
North America | Bahamas | 1132.004 |
North America | Barbados | 918.886 |
North America | Belize | 1571.384 |
North America | Bermuda | 229.694 |
North America | Bonaire Sint Eustatius and Saba | 196.000 |
North America | British Virgin Islands | 95.420 |
North America | Canada | 224845.584 |
North America | Cayman Islands | 272.192 |
North America | Costa Rica | 28288.367 |
North America | Cuba | 134792.939 |
North America | Curacao | 506.098 |
North America | Dominica | 126.824 |
North America | Dominican Republic | 49855.931 |
North America | El Salvador | 35931.682 |
North America | Greenland | 265.404 |
North America | Grenada | 264.065 |
North America | Guatemala | 45166.404 |
North America | Haiti | 1180.857 |
North America | Honduras | 38509.931 |
North America | Jamaica | 4322.571 |
North America | Mexico | 537110.780 |
North America | Montserrat | 4.167 |
North America | Nicaragua | 31034.563 |
North America | Panama | 22843.780 |
North America | Saint Kitts and Nevis | 172.869 |
North America | Saint Lucia | 329.196 |
North America | Saint Vincent and the Grenadines | 192.380 |
North America | Sint Maarten (Dutch part) | 119.223 |
North America | Trinidad and Tobago | 5537.780 |
North America | Turks and Caicos Islands | 143.461 |
North America | United States | 1061875.788 |
Oceania | Australia | 164498.127 |
Oceania | Cook Islands | 103.545 |
Oceania | Fiji | 4905.229 |
Oceania | French Polynesia | 1098.269 |
Oceania | Kiribati | 472.540 |
Oceania | Nauru | 51.922 |
Oceania | New Caledonia | 1209.878 |
Oceania | New Zealand | 32212.531 |
Oceania | Niue | 17.181 |
Oceania | Papua New Guinea | 2065.518 |
Oceania | Pitcairn | 0.512 |
Oceania | Samoa | 1071.257 |
Oceania | Solomon Islands | 962.657 |
Oceania | Tokelau | 17.398 |
Oceania | Tonga | 524.188 |
Oceania | Tuvalu | 40.518 |
Oceania | Vanuatu | 746.451 |
Oceania | Wallis and Futuna | 27.269 |
South America | Argentina | 282647.906 |
South America | Bolivia | 36330.376 |
South America | Brazil | 1166325.122 |
South America | Chile | 119642.543 |
South America | Colombia | 243108.188 |
South America | Ecuador | 106425.943 |
South America | Guyana | 2392.416 |
South America | Paraguay | 27289.792 |
South America | Peru | 198545.869 |
South America | Suriname | 1841.780 |
South America | Uruguay | 21284.976 |
South America | Venezuela | 127191.261 |
mean_vaccinations %>%
ggplot(aes(continent, mean_new_vaccinations, fill=continent))+
geom_boxplot()+
scale_y_log10(breaks = trans_breaks("log10", function(x) 10^x),
labels = trans_format("log10", math_format(10^.x))) +
annotation_logticks(sides = "l")+
labs(
title = "Średnia dzienna ilość podanych szczepionek w poszczególnych krajach",
subtitle = "Dane z okresu pomiędzy 01.05.2021 a 31.12.2021",
caption = "M.F.",
x = "Kontynent",
y = "Ilość dziennych szczepionek [log10]")
Uwaga, ze względu na duże zróżnicowanie otrzymanych statystyk pomiędzy poszczególnymi kontynentami zdecydowano się przedstawić ten wykres w skali logarytmicznej.
mean_vaccinations %>%
group_by(continent) %>%
summarise(
min = min(mean_new_vaccinations, na.rm=T),
q1 = quantile(mean_new_vaccinations, .25, na.rm=T),
median = median(mean_new_vaccinations, na.rm=T),
q3 = quantile(mean_new_vaccinations, .75, na.rm=T),
max = max(mean_new_vaccinations, na.rm=T)
) %>% mutate_if(is.numeric, round, digits = 0) %>% kable1()
continent | min | q1 | median | q3 | max |
---|---|---|---|---|---|
Africa | 97 | 2252 | 5868 | 27552 | 218705 |
Asia | 1646 | 13285 | 35516 | 213362 | 10437883 |
Europe | 114 | 4056 | 17448 | 57255 | 514895 |
North America | 4 | 204 | 712 | 30348 | 1061876 |
Oceania | 1 | 43 | 635 | 1182 | 164498 |
South America | 1842 | 25789 | 113034 | 209686 | 1166325 |