Skip to contents

After installing SaviR, you are ready to use the following functions to read in the data and create visualizations. There are functions to create plots, maps, or tables by World Health Organization (WHO) Region, Department of State (DoS) Region, or globally.

Data: The Frankenstein Dataset

onetable - stored metadata with iso2 and iso3 codes, country names, WHO/DoS/World Bank regions, and UN population estimates
get_covid_df(sources = c("all", "WHO", "WHO+JHU", "WHO+Primary")) - COVID cases/deaths dataframe from WHO and other sources. calc_add_risk() - Add risk matrix calculations to dataframe (df)
get_vax() - Get vaccination data from Our World In Data (OWID)
get_combined_table(type = c("WHO", "Both", "legacy"), geometry=FALSE) - Combine all of the above into one large df, optionally add geometry

This snippet produces the master df with all the variables required for all of the following graphics.

# Load in data to create visuals
df_who <- get_combined_table("WHO") # China includes Taiwan, Hong Kong, and Macau data

# Data for visuals are typically as of Sunday of the current week
# but this can be determined dynamically using WHO data.
sunday_date <- df_who |>
  distinct(date, dow = weekdays(date)) |>
  arrange(desc(date)) |>
  filter(dow == "Sunday") |>
  slice(1) |>
  pull(date)

Plots

plot_epicurve(df, transparent = T)

When creating epi curves for the WHO regions, the “plot_epicurve” function should take in the df with only “WHO” observations in order to match the same curve on the WHO Coronavirus Dashboard. The individual epi curves for each region can be run simply by filtering for one WHO region in the df. The function will detect that the region column has only one region and will produce the epi curve accordingly.

When creating epi curves for the DoS regions, the plot_epicurve function should take in the df with “Both” observations. Similarly to the WHO epi curves, individual epi curves can also be produce by filtering to one DoS region.

# Epi Curves for WHO -- Global
epi_curve_global <- plot_epicurve(df_who, transparent = T)


epi_curve_global


# Epi Curves for DoS -- Global
state_epi_curve <- plot_epicurve(filter(df_who, date <= sunday_date),
                                 type = "cases", 
                                 by_cat = "State Region")
state_epi_curve

Inset plots

  • We can also pass inset = TRUE to plot an inset plot for the most recent weeks
    • By default, the inset for the case plot is slightly left and cener in the plot window
    • Deaths plot inset is slightly up and to the right
  • Looks at the past 9 weeks of data in the inset, or min(date) + weeks(1), whichever is later
inset_epi_curve <- df_who |>
  filter(date <= sunday_date) |>
  plot_epicurve(type = "cases", by_cat = "State Region", transparent = FALSE, inset = TRUE)

inset_epi_curve

# Regions
for (r in unique(na.omit(df_who$who_region))) {
  epi_curve_regional <- plot_epicurve(filter(df_who, who_region == r), transparent = F)


  print(epi_curve_regional)
}

plot_riskmatrix(df)

Note for labeling purposes, the labels variable should be added to the dataframe specifying the top 10 countries for weekly average incidence, week case percent change, and weekly total cases. Exclusion criteria: Countries with population less than 10 million and countries with weekly cases totals less than 100.

global_risk_matrix <- df_who %>%
  filter(date == sunday_date) %>%
  filter(population >= 10000000) %>% # Exclude population less than 10M
  filter(week_case >= 100) %>%
  mutate(
    rank_inc = dense_rank(desc(week_case_incidence)),
    rank_per = dense_rank(desc(percent_change_case)),
    rank_cas = dense_rank(desc(week_case))
  ) %>%
  mutate(labels = case_when(
    rank_inc %in% 1:10 ~ country,
    rank_per %in% 1:10 ~ country,
    rank_cas %in% 1:10 ~ country
  )) %>%
  plot_riskmatrix()


global_risk_matrix

global_vax_coverage <- df_who %>%
  filter(date <= sunday_date) %>%
  filter(date == max(date)) %>%
  filter(!is.na(state_region)) %>%
  plot_vaxcoverage(by_cat = "State Region")

global_vax_coverage

Maps

By default, get_combined_table() does not return geometry. This is preferable, since the size of the table is quite large and the geometry list column takes up a lot of space in memory. However, if we want to map these data, we can either call get_combined_table("Both", geometry = TRUE), or join with country_coords after filtering, like so:

# Filter to only observations with date as of Sunday
# and join in geometry
df_who_mapping <- df_who %>%
  filter(date == sunday_date) %>%
  left_join(select(country_coords, id, geometry), by = "id")

map_burden(df, region, time_step)

The “map_burden” function takes in a pre-filtered data.frame and computes and displays average incidence for each country over the time period selected.
The region argument is optional, but it is used to specify a specific DoS/WHO region to zoom to, if desired.
time_step is used to specify the days used to average incidence over. This is always relative to the latest date in the data.frame.
bin_breaks and bin_colors can be used to over-ride sensible defaults for incidence cutpoints and color scheme, if desired.

burden_map_global <- df_who |>
  filter(date <= sunday_date) |>
  map_burden()


burden_map_global


for (r in unique(na.omit(df_who$who_region))) {
  burden_map_regional <- df_who |>
    filter(who_region == r, date <= sunday_date) |>
    map_burden(region = r)


  print(burden_map_regional)
}

and an example of how to produce a 14d map:

burden_map_global_14 <- df_who |>
  filter(date <= sunday_date) |>
  map_burden(time_step = 14)


burden_map_global_14

We can also over-ride the incidence cut-points, like so:

# same map with 0-1, 1-5, 5-10, 10+ breaks
burden_map_global_14_2 <- df_who |>
  filter(date <= sunday_date) |>
  map_burden(
    time_step = 14,
    bin_breaks = c(0, 1, 5, 10, Inf),
    bin_colors = c("0- <1" = "#f1e5a1", "1- <5" = "#e7b351", "5- <10" = "#d26230", "10+" = "#aa001e")
  )

burden_map_global_14_2

map_trend(df, region, time_step = 7)

The “map_trend” function requires a result column where weekly percent change is converted into factors using “cut”.

The default behavior is to visualize a global trend map, but passing a data frame filtered to a specific region and providing the region name as a region argument will change the bounding box accordingly.

A different time_step can be provided. The default assumes you are comparing two 7d periods, but this can be increased or decreased accordingly.

trend_map_global <- df_who |>
  filter(date <= sunday_date) |>
  map_trend()


trend_map_global

for (r in unique(na.omit(df_who$who_region))) {
  trend_map_reg <- df_who |>
  filter(date <= sunday_date) |>
    map_trend(region = r)

  print(trend_map_reg)
}

and an example producing the same with different time_step:

df_who |>
  filter(date <= sunday_date) |>
  map_trend(time_step = 14)

map_vaccinations(df, vac_type = c("People", "Fully"))

global_vax_map <- df_who_mapping %>%
  mutate(result = cut(people_vaccinated_per_hundred, breaks = c(0, 1, 3, 10, 30, Inf))) %>%
  group_by(country) %>%
  filter(!is.na(result)) %>%
  filter(date == max(date)) %>%
  ungroup() %>%
  map_vaccinations(., vac_type = "People")

global_vax_map

Tables

table_10mostcases(df, time_step = 7, region = NULL, data_as_of = NULL)

This function presents a top-10 table of countries based on cases reported in the past time_step.
The default is a 7 day period, but this can be adjusted. Additionally, you can tweak the title and data-as-of footnote using those variables respectively, or they will be inferred internally.

7-day Table

df_who |>
  filter(date <= sunday_date) |>
  table_10mostcases(data_as_of = format(sunday_date, "%B %d, %Y"))
10 Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Russia 185,312 −65.7
Australia 61,322 −14.9
Singapore 57,990 −75.8
Malaysia 47,464 −47.5
Argentina 40,009 1,721.1
New Zealand 37,842 −9.6
Greece 34,865 −64.7
Chile 34,016 1,310.9
United Kingdom 33,652 −40.4
Italy 31,966 −90.7
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior

14-day Table

df_who |>
  filter(date <= sunday_date) |>
  table_10mostcases(time_step = 14)
10 Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 14 Days
% Change
Past 14 Days1
Russia 725,325 187.5
Italy 374,074 −9.8
Singapore 297,488 82.7
Malaysia 137,849 773.9
Greece 133,758 2.2
Australia 133,400 52.9
Poland 109,069 235.6
United Kingdom 90,072 −39.5
New Zealand 79,706 73.0
Czechia 76,480 98.9
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 14 days to 14 days prior

By region

for (r in unique(na.omit(df_who$who_region))) {
  tab_out <- df_who |>
    filter(date <= sunday_date, who_region == r) |>
    table_10mostcases(region = r, data_as_of = format(Sys.Date(), "%B %d, %Y"))
  
  print(htmltools::tagList(tab_out))
}
10 (AMRO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Argentina 40,009 1,721.1
Chile 34,016 1,310.9
Peru 20,688 -
Canada 15,529 −59.1
Colombia 13,054 1,234.8
Ecuador 4,448 506.0
Panama 894 96.1
Barbados 221 590.6
Guyana 120 990.9
Jamaica 118 114.5
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
10 (EMRO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Iran 1,541 0.5
Afghanistan 1,348 −30.8
Morocco 589 −22.2
Kuwait 486 265.4
United Arab Emirates 0 -
Bahrain 0 -
Djibouti 0 -
Egypt 0 -
Iraq 0 -
Jordan 0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
10 (AFRO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Mauritius 1,887 −86.4
Zimbabwe 238 25.3
Uganda 198 214.3
Angola 193 −82.9
Namibia 127 54.9
Burundi 93 −10.6
Mauritania 48 33.3
Ethiopia 40 66.7
Benin 0 -
Burkina Faso 0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
10 (EURO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Russia 185,312 −65.7
Greece 34,865 −64.7
United Kingdom 33,652 −40.4
Italy 31,966 −90.7
Poland 19,281 −78.5
Romania 11,116 0.5
Belgium 8,660 −56.9
Czechia 7,247 −89.5
Lithuania 5,362 −47.7
Ireland 4,140 −13.7
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
10 (WPRO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
Australia 61,322 −14.9
Singapore 57,990 −75.8
Malaysia 47,464 −47.5
New Zealand 37,842 −9.6
China 10,996 195.5
Brunei Darussalam 9,132 −55.1
Philippines 5,038 −64.1
Cambodia 54 −39.3
Mongolia 48 −68.2
Laos 34 240.0
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
10 (SEARO) Countries/ Areas with Most New Cases
Country/ Area New Cases
Past 7 Days
% Change
Past 7 Days1
India 10,901 −34.2
Indonesia 4,601 −55.5
Thailand 4,199 6.8
Bangladesh 1,823 376.0
Burma 310 154.1
Sri Lanka 28 −72.8
Bhutan 0 -
Maldives 0 -
Nepal 0 -
Korea (North) 0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Percent change in cases of most recent 7 days to 7 days prior

table_10incidence(df, time_step = 7, region = NULL, data_as_of = NULL)

Similar to the above, but computes top-10 countries baseed on incidence over past time_step.

7-day table

df_who |>
  filter(date <= sunday_date) |>
  table_10incidence(data_as_of = format(sunday_date, "%B %d, %Y"))
10 Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Brunei Darussalam 290.5 −55.1
Singapore 138.6 −75.8
New Zealand 104.3 −9.6
Greece 48.0 −64.7
Australia 33.5 −14.9
Lithuania 27.9 −47.7
Chile 24.8 1,310.9
Mauritius 20.7 −86.4
Malaysia 20.0 −47.5
Luxembourg 18.8 −75.6
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior

14-day table

df_who |>
  filter(date <= sunday_date) |>
  table_10incidence(time_step = 14)
10 Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 14 Days2
Brunei Darussalam 468.5 731.9
Niue 384.1 76.3
Singapore 355.6 82.7
New Zealand 109.8 73.0
Cyprus 103.6 760.9
Greece 92.0 2.2
Mauritius 86.8 690.7
Czechia 52.1 98.9
Croatia 48.4 230.1
Luxembourg 48.0 19.9
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Average daily incidence per 100,000 in past 14 days
2 Percent change in cases of most recent 14 days to 14 days prior

By Region

for (r in unique(na.omit(df_who$who_region))) {
  tab_out <- df_who %>%
    filter(date <= sunday_date, who_region == r) |>
    table_10incidence(region = r, data_as_of = format(Sys.Date(), "%B %d, %Y"))

  print(htmltools::tagList(tab_out))
}
10 (AMRO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Chile 24.8 1,310.9
Argentina 12.6 1,721.1
Barbados 11.2 590.6
Turks and Caicos Islands 10.6 100.0
Peru 8.7 -
Canada 5.8 −59.1
Colombia 3.6 1,234.8
Ecuador 3.5 506.0
Panama 2.9 96.1
Guyana 2.1 990.9
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior
10 (EMRO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Kuwait 1.6 265.4
Afghanistan 0.5 −30.8
Iran 0.2 0.5
Morocco 0.2 −22.2
United Arab Emirates 0.0 -
Bahrain 0.0 -
Djibouti 0.0 -
Egypt 0.0 -
Iraq 0.0 -
Jordan 0.0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior
10 (AFRO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Mauritius 20.7 −86.4
Namibia 0.7 54.9
Zimbabwe 0.2 25.3
Mauritania 0.1 33.3
Burundi 0.1 −10.6
Angola 0.1 −82.9
Uganda 0.1 214.3
Ethiopia 0.0 66.7
Benin 0.0 -
Burkina Faso 0.0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior
10 (EURO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Greece 48.0 −64.7
Lithuania 27.9 −47.7
Luxembourg 18.8 −75.6
Russia 18.3 −65.7
Moldova 13.3 −27.0
Estonia 12.2 −75.4
Ireland 11.8 −13.7
Belgium 10.6 −56.9
Czechia 9.9 −89.5
Romania 8.1 0.5
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior
10 (WPRO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Brunei Darussalam 290.5 −55.1
Singapore 138.6 −75.8
New Zealand 104.3 −9.6
Australia 33.5 −14.9
Malaysia 20.0 −47.5
Philippines 0.6 −64.1
Mongolia 0.2 −68.2
China 0.1 195.5
Laos 0.1 240.0
Cambodia 0.0 −39.3
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior
10 (SEARO) Countries/ Areas with Highest Incidence
Country/ Area Incidence
Per 100,0001
% Change
Past 7 Days2
Thailand 0.8 6.8
Indonesia 0.2 −55.5
Bangladesh 0.2 376.0
India 0.1 −34.2
Burma 0.1 154.1
Sri Lanka 0.0 −72.8
Bhutan 0.0 -
Maldives 0.0 -
Nepal 0.0 -
Korea (North) 0.0 -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of March 11, 2024
1 Average daily incidence per 100,000 in past 7 days
2 Percent change in cases of most recent 7 days to 7 days prior

table_10percentchange(df, time_step = 7, second_time_step = 28, region = NULL, data_as_of = NULL)

Works similarly to the above, but selects top 10 countries based on percent change over time_step.
There’s an additional argument second_time_step that specifies a second (normally longer) period to compute a percent change over.
The default visualization is using weekly change and 4 week change.

This table is usually filtered to only countries over a certain population size, but this should be handled
externally.

Global table (7d and 28d pct change)

df_who %>%
  filter(date <= sunday_date, population >= 10000000) |>
  table_10percentchange(data_as_of = format(sunday_date, "%B %d, %Y"))
10 Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Guatemala 1,800.0 −99.9
Argentina 1,721.1 439.6
Chile 1,310.9 −78.7
Colombia 1,234.8 44.9
Haiti 1,200.0 −53.9
Ecuador 506.0 −28.5
Bangladesh 376.0 −56.7
Uganda 214.3 −79.5
China 195.5 −96.3
Burma 154.1 −90.8
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior

Global table (14d and 28d pct change)

df_who %>%
  filter(date <= sunday_date, population >= 10000000) |>
  table_10percentchange(time_step = 14)
10 Countries/ Areas with
Highest Percent Change In Past 14 Days
Country/ Area % Change
Past 14 Days1
% Change
Past 28 Days2
Indonesia 5,601.5 −81.8
Angola 1,847.1 85.6
Cambodia 1,330.0 −40.0
Malaysia 773.9 80.1
Ukraine 490.7 −90.2
India 418.0 −89.6
Uganda 392.5 −79.5
Kazakhstan 380.4 −87.0
Poland 235.6 1.0
Sri Lanka 191.1 −70.0
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 14 days to 14 days prior
2 Percent change in cases of most recent 28 days to 28 days prior

Regional Tables

for (r in unique(na.omit(df_who$who_region))) {
  tab_out <- df_who %>%
    filter(date <= sunday_date, population >= 100000, who_region == r) |> # Exclude population less than 100,000
    table_10percentchange(region = r, data_as_of = format(sunday_date, "%B %d, %Y")) 
    
  print(htmltools::tagList(tab_out))
}
10 (AMRO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Guatemala 1,800.0 −99.9
Argentina 1,721.1 439.6
Chile 1,310.9 −78.7
Colombia 1,234.8 44.9
Haiti 1,200.0 −53.9
Guyana 990.9 −69.0
Barbados 590.6 −84.5
Belize 533.3 −87.2
Ecuador 506.0 −28.5
Nicaragua 333.3 −88.9
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior
10 (EMRO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Kuwait 265.4 −62.2
Iran 0.5 −71.6
Morocco −22.2 18.4
Afghanistan −30.8 −54.9
United Arab Emirates - -
Bahrain - -
Djibouti - -
Egypt - -
Iraq - -
Jordan - -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior
10 (AFRO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Uganda 214.3 −79.5
Ethiopia 66.7 −89.1
Namibia 54.9 −70.1
Mauritania 33.3 −52.0
Zimbabwe 25.3 −81.3
Burundi −10.6 −56.4
Angola −82.9 85.6
Mauritius −86.4 21.9
Benin - −8.3
Burkina Faso - 231.2
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior
10 (EURO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Azerbaijan 152.6 −30.7
Kazakhstan 101.3 −87.0
Romania 0.5 29.2
Armenia −4.3 −26.6
Ireland −13.7 17.1
Moldova −27.0 −37.3
Malta −29.8 −37.5
Albania −34.8 −11.3
United Kingdom −40.4 −37.8
Kyrgyzstan −47.1 −65.3
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior
10 (WPRO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Laos 240.0 −80.0
China 195.5 −96.3
New Zealand −9.6 −46.9
Australia −14.9 −63.3
Cambodia −39.3 −40.0
Malaysia −47.5 80.1
Brunei Darussalam −55.1 −6.2
Philippines −64.1 −133.0
Mongolia −68.2 −83.6
Singapore −75.8 40.6
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior
10 (SEARO) Countries/ Areas with
Highest Percent Change In Past 7 Days
Country/ Area % Change
Past 7 Days1
% Change
Past 28 Days2
Bangladesh 376.0 −56.7
Burma 154.1 −90.8
Thailand 6.8 −60.1
India −34.2 −89.6
Indonesia −55.5 −81.8
Sri Lanka −72.8 −70.0
Bhutan - −96.6
Maldives - -
Nepal - −97.6
Korea (North) - -
Data Source: WHO Coronavirus Disease (COVID-19) Dashboard
Data as of February 25, 2024
1 Percent change in cases of most recent 7 days to 7 days prior
2 Percent change in cases of most recent 28 days to 28 days prior

table_10vaccinations(df, type = c("Global", "Region"), run_date)

The “table_10vaccinations” function takes looks for a country, value1 (people vaccinated per hundred), and a value2 (daily vaccinations per hundred) column. Note as vaccination reporting has gaps, the df must be sliced by country and the most recent date with people_vaccinated_per_hundred value (if there is one).

df_who %>%
  filter(date <= sunday_date) %>%
  filter(population > 1000000) %>%
  group_by(country) %>%
  filter(!is.na(people_vaccinated_per_hundred)) %>%
  filter(date == max(date)) %>%
  ungroup() %>%
  select(country = who_country, value1 = people_vaccinated_per_hundred, value2 = daily_vaccinations_per_hundred) %>%
  arrange(desc(value1)) %>%
  head(10) %>%
  table_10vaccinations(., run_date = format(sunday_date, "%B %d, %Y"))
Top 10 Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
United Arab Emirates 105.8 NA
Qatar 105.8 NA
Cuba 96.0 NA
Portugal 95.3 NA
Chile 92.3 NA
Nicaragua 92.2 NA
Viet Nam 91.9 NA
China 91.9 NA
Singapore 91.5 NA
Cambodia 91.3 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 1 million were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
for (r in unique(na.omit(df_who$who_region))) {
  tab_out <- df_who %>%
    filter(date <= sunday_date) %>%
    filter(population > 100000) %>% # Exclude population less than 100,000
    filter(who_region == r) %>%
    group_by(country) %>%
    filter(!is.na(people_vaccinated_per_hundred)) %>%
    arrange(date) %>%
    top_n(1, date) %>%
    distinct(id, .keep_all = T) %>%
    select(country = who_country, value1 = people_vaccinated_per_hundred, value2 = daily_vaccinations_per_hundred) %>%
    arrange(desc(value1)) %>%
    head(10) %>%
    table_10vaccinations(., type = r, run_date = format(sunday_date, "%B %d, %Y"))

  print(htmltools::tagList(tab_out))
}
10 (AMRO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Cuba 96.0 NA
Chile 92.3 NA
Nicaragua 92.2 NA
Argentina 91.2 NA
Canada 90.3 0.00
Peru 89.8 NA
Costa Rica 89.6 NA
Brazil 88.1 NA
Uruguay 88.0 NA
Ecuador 85.2 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
10 (EMRO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
United Arab Emirates 105.8 NA
Qatar 105.8 NA
Bahrain 84.3 NA
Kuwait 81.0 NA
Iran 73.6 NA
Saudi Arabia 71.3 NA
Oman 71.1 NA
Pakistan 70.2 NA
Morocco 66.8 NA
Tunisia 58.4 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
10 (AFRO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Mauritius 86.5 NA
Seychelles 82.6 NA
Rwanda 79.0 NA
Botswana 74.2 NA
Liberia 73.6 NA
Mozambique 69.4 NA
Sierra Leone 66.0 NA
Guinea 62.9 NA
Sao Tome and Principe 61.7 NA
Cabo Verde 60.1 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
10 (EURO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Portugal 95.3 NA
Malta 89.8 0.00
Spain 86.9 NA
Italy 86.3 NA
Iceland 83.0 NA
Ireland 81.8 NA
Finland 81.7 NA
Denmark 80.7 NA
France 80.6 NA
Norway 80.0 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
10 (WPRO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Brunei Darussalam 100.5 NA
Viet Nam 91.9 NA
China 91.9 NA
Singapore 91.5 NA
Cambodia 91.3 NA
Korea (South) 86.4 NA
Samoa 86.1 NA
Australia 84.9 NA
Japan 84.5 NA
New Zealand 83.0 0.01
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated
10 (SEARO) Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Nepal 91.3 NA
Bhutan 89.3 NA
Bangladesh 88.5 0.00
Thailand 79.5 NA
Sri Lanka 78.5 NA
Maldives 76.2 NA
Burma 74.5 NA
Indonesia 74.0 NA
India 72.5 0.00
Timor-Leste 66.1 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 100,000 were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated

table_10vaccinations(df, vac_type = c("Partial", "Fully"), type = "Global", run_date = "Enter a date")

df_who %>%
  filter(date <= sunday_date) %>%
  filter(population > 1000000) %>%
  group_by(country) %>%
  filter(!is.na(people_fully_vaccinated_per_hundred)) %>%
  filter(date == max(date)) %>%
  ungroup() %>%
  select(country = who_country, value1 = people_fully_vaccinated_per_hundred, value2 = daily_vaccinations_per_hundred) %>%
  arrange(desc(value1)) %>%
  head(10) %>%
  table_10vaccinations(., run_date = format(sunday_date, "%B %d, %Y"))
Top 10 Countries/ Areas with Highest
Vaccination per 100 People
1,2
Country/ Area People Vaccinated
per 100 People3
Daily Vaccines
Administered
per 100 People4
Qatar 105.8 NA
United Arab Emirates 103.7 NA
Singapore 90.8 NA
Chile 90.3 NA
China 89.5 NA
Cuba 89.5 NA
Nicaragua 88.0 NA
Cambodia 87.6 NA
Viet Nam 87.5 NA
Portugal 86.8 NA
Data as of February 25, 2024
1 Countries with population size less than or equal to 1 million were excluded
2 People vaccinated per 100 people represents total population (all ages)
3 Number of people out of 100 who received at least one vaccine dose; does not represent percent of population that completed primary vaccination series
4 Vaccine doses administered per day (7 day rolling average); does not represent number of people vaccinated

table_countriesofconcern(df, df_vaccinations_manufacturers, country_list)

c_list <- c("United Kingdom","Denmark","Portugal","South Africa","Kenya","Zambia","United States of America")
c_list_iso <- parse_country(c_list, to = "iso3c")

df_who_latest <- df_who %>%
  group_by(id) %>%
  filter(date == max(date)) %>%
  ungroup()

vax_man <- get_vax_manufacturers()

table_countriesofconcern(df_who_latest, vax_man, c_list_iso)

Country

Denmark

United Kingdom

Kenya

Portugal

United States of America

South Africa

Zambia

Date

2024-02-25

2024-02-25

2024-02-25

2024-02-25

2024-02-25

2024-02-25

2024-02-25

New Cases 7 Day Average
(7 Day Average Case Incidence per 100,000)

204.7
(3.48)

4,807.4
(7.12)

0
(0)

314.6
(3.06)

0
(0)

0
(0)

0
(0)

7 Day Cases

1,433

33,652

0

2,202

0

0

0

Previous 7 Day Cases

12,831

56,420

0

6,834

0

19

2

% Change in Cases from Previous 7 Days

-89%

-40%

-68%

-100%

-100%

New Deaths 7 Day Average
(7 Day Average Death Incidence per 100,000)

14.3
(0.24)

0
(0)

0
(0)

19.4
(0.19)

1,721.6
(0.51)

0
(0)

0
(0)

7 Day Deaths

100

0

0

136

12,051

0

0

Previous 7 Day Deaths

563

0

0

212

13,252

0

0

% Change in Deaths from Previous 7 Days

-82%

-36%

-9%

Most Recent Date for Vaccinations

2023-09-29

2022-09-11

2023-04-02

2023-09-29

2023-05-09

2023-09-24

2023-06-25

People Vaccinated Per 100 People

80.69

79.71

26.83

95.34

81.39

40.42

58.51

People who completed primary
vaccination series per 100 People

80.11

75.19

20.53

86.75

69.47

35.13

46.03

Total Vaccinations Per 100 People

254.24

224.04

43.96

275.03

203.81

69.79

67.21

Vaccines in Use

Johnson&Johnson, Moderna, Oxford/AstraZeneca, Pfizer/BioNTech

Moderna, Oxford/AstraZeneca, Pfizer/BioNTech

Johnson&Johnson, Moderna, Oxford/AstraZeneca, Pfizer/BioNTech, Sinopharm/Beijing

Covaxin, Johnson&Johnson, Moderna, Novavax, Oxford/AstraZeneca, Pfizer/BioNTech, Sanofi/GSK, Sinopharm/Beijing, Sinovac

Johnson&Johnson, Moderna, Novavax, Pfizer/BioNTech

Johnson&Johnson, Pfizer/BioNTech

Johnson&Johnson, Oxford/AstraZeneca, Sinopharm/Beijing

% Delta since January 1, 2022

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually

% Omicron since January 1, 2022

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually

Fill manually