Immunization, measles (% of children ages 12-23 months)

Source: worldbank.org, 01.09.2025

Year: 2023

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 55 -1.79% 36
Angola Angola 50 +35.1% 39
Albania Albania 83 -3.49% 17
Andorra Andorra 99 +1.02% 1
United Arab Emirates United Arab Emirates 98 0% 2
Argentina Argentina 80 -5.88% 20
Armenia Armenia 96 +1.05% 4
Antigua & Barbuda Antigua & Barbuda 94 -5.05% 6
Australia Australia 91 -5.21% 9
Austria Austria 95 0% 5
Azerbaijan Azerbaijan 96 +3.23% 4
Burundi Burundi 86 -3.37% 14
Belgium Belgium 96 0% 4
Benin Benin 52 0% 37
Burkina Faso Burkina Faso 94 +3.3% 6
Bangladesh Bangladesh 97 0% 3
Bulgaria Bulgaria 92 +1.1% 8
Bahrain Bahrain 99 0% 1
Bahamas Bahamas 86 +7.5% 14
Bosnia & Herzegovina Bosnia & Herzegovina 55 -5.17% 36
Belarus Belarus 97 -1.02% 3
Belize Belize 93 +14.8% 7
Bolivia Bolivia 68 -1.45% 30
Brazil Brazil 87 +7.41% 13
Barbados Barbados 89 +4.71% 11
Brunei Brunei 97 0% 3
Bhutan Bhutan 99 +2.06% 1
Botswana Botswana 97 +7.78% 3
Central African Republic Central African Republic 41 0% 43
Canada Canada 92 0% 8
Switzerland Switzerland 95 -1.04% 5
Chile Chile 94 0% 6
China China 97 -2.02% 3
Côte d’Ivoire Côte d’Ivoire 70 +12.9% 29
Cameroon Cameroon 71 +4.41% 28
Congo - Kinshasa Congo - Kinshasa 52 -7.14% 37
Congo - Brazzaville Congo - Brazzaville 65 0% 32
Colombia Colombia 93 +5.68% 7
Comoros Comoros 70 -1.41% 29
Cape Verde Cape Verde 95 0% 5
Costa Rica Costa Rica 93 +3.33% 7
Cuba Cuba 99 0% 1
Cyprus Cyprus 82 -2.38% 18
Czechia Czechia 87 -10.3% 13
Germany Germany 97 0% 3
Djibouti Djibouti 76 +52% 24
Dominica Dominica 87 0% 13
Denmark Denmark 95 0% 5
Dominican Republic Dominican Republic 94 +3.3% 6
Algeria Algeria 99 +25.3% 1
Ecuador Ecuador 74 0% 25
Egypt Egypt 96 0% 4
Eritrea Eritrea 93 0% 7
Spain Spain 96 0% 4
Estonia Estonia 89 0% 11
Ethiopia Ethiopia 61 +10.9% 34
Finland Finland 94 0% 6
Fiji Fiji 99 0% 1
France France 95 0% 5
Micronesia (Federated States of) Micronesia (Federated States of) 86 +24.6% 14
Gabon Gabon 66 +26.9% 31
United Kingdom United Kingdom 90 0% 10
Georgia Georgia 95 +5.56% 5
Ghana Ghana 90 -5.26% 10
Guinea Guinea 47 0% 40
Gambia Gambia 80 +8.11% 20
Guinea-Bissau Guinea-Bissau 72 -4% 27
Equatorial Guinea Equatorial Guinea 61 +24.5% 34
Greece Greece 97 0% 3
Grenada Grenada 82 +7.89% 18
Guatemala Guatemala 88 +2.33% 12
Guyana Guyana 95 0% 5
Honduras Honduras 77 0% 23
Croatia Croatia 90 0% 10
Haiti Haiti 65 0% 32
Hungary Hungary 99 0% 1
Indonesia Indonesia 82 -10.9% 18
India India 93 -2.11% 7
Ireland Ireland 89 -1.11% 11
Iran Iran 99 0% 1
Iraq Iraq 97 0% 3
Iceland Iceland 91 0% 9
Israel Israel 98 0% 2
Italy Italy 95 +1.06% 5
Jamaica Jamaica 93 +2.2% 7
Jordan Jordan 95 +10.5% 5
Japan Japan 94 -4.08% 6
Kazakhstan Kazakhstan 99 0% 1
Kenya Kenya 91 +2.25% 9
Kyrgyzstan Kyrgyzstan 96 +2.13% 4
Cambodia Cambodia 79 -4.82% 21
Kiribati Kiribati 79 -7.06% 21
St. Kitts & Nevis St. Kitts & Nevis 95 0% 5
South Korea South Korea 97 0% 3
Kuwait Kuwait 99 0% 1
Laos Laos 80 +5.26% 20
Lebanon Lebanon 73 +8.96% 26
Liberia Liberia 82 +3.8% 18
Libya Libya 73 0% 26
St. Lucia St. Lucia 85 +4.94% 15
Sri Lanka Sri Lanka 99 0% 1
Lesotho Lesotho 90 +11.1% 10
Lithuania Lithuania 87 0% 13
Luxembourg Luxembourg 99 0% 1
Latvia Latvia 96 0% 4
Morocco Morocco 99 0% 1
Monaco Monaco 88 0% 12
Moldova Moldova 85 +1.19% 15
Madagascar Madagascar 51 +15.9% 38
Maldives Maldives 99 +1.02% 1
Mexico Mexico 76 -11.6% 24
Marshall Islands Marshall Islands 88 +8.64% 12
North Macedonia North Macedonia 73 +2.82% 26
Mali Mali 73 0% 26
Malta Malta 95 -1.04% 5
Myanmar (Burma) Myanmar (Burma) 74 -1.33% 25
Montenegro Montenegro 24 -27.3% 45
Mongolia Mongolia 96 +2.13% 4
Mozambique Mozambique 65 +3.17% 32
Mauritania Mauritania 92 +9.52% 8
Mauritius Mauritius 96 -2.04% 4
Malawi Malawi 87 +6.1% 13
Malaysia Malaysia 96 0% 4
Namibia Namibia 86 -3.37% 14
Niger Niger 80 +23.1% 20
Nigeria Nigeria 60 0% 35
Nicaragua Nicaragua 85 -8.6% 15
Netherlands Netherlands 89 0% 11
Norway Norway 96 0% 4
Nepal Nepal 93 +3.33% 7
Nauru Nauru 98 0% 2
New Zealand New Zealand 89 -1.11% 11
Oman Oman 99 +2.06% 1
Pakistan Pakistan 84 +2.44% 16
Panama Panama 78 -10.3% 22
Peru Peru 84 +13.5% 16
Philippines Philippines 81 +6.58% 19
Palau Palau 96 0% 4
Papua New Guinea Papua New Guinea 52 +26.8% 37
Poland Poland 91 0% 9
North Korea North Korea 28 -58.2% 44
Portugal Portugal 98 0% 2
Paraguay Paraguay 83 +53.7% 17
Palestinian Territories Palestinian Territories 89 -8.25% 11
Qatar Qatar 99 0% 1
Romania Romania 78 -6.02% 22
Russia Russia 97 0% 3
Rwanda Rwanda 96 -3.03% 4
Saudi Arabia Saudi Arabia 97 -1.02% 3
Sudan Sudan 51 -22.7% 38
Senegal Senegal 76 0% 24
Singapore Singapore 97 +1.04% 3
Solomon Islands Solomon Islands 68 -24.4% 30
Sierra Leone Sierra Leone 90 0% 10
El Salvador El Salvador 99 +23.8% 1
San Marino San Marino 89 -2.2% 11
Somalia Somalia 46 0% 41
Serbia Serbia 84 +3.7% 16
South Sudan South Sudan 72 0% 27
São Tomé & Príncipe São Tomé & Príncipe 86 +4.88% 14
Suriname Suriname 71 -4.05% 28
Slovakia Slovakia 94 -1.05% 6
Slovenia Slovenia 95 -1.04% 5
Sweden Sweden 93 +1.09% 7
Eswatini Eswatini 85 +2.41% 15
Seychelles Seychelles 93 -5.1% 7
Syria Syria 74 +42.3% 25
Chad Chad 63 +16.7% 33
Togo Togo 72 +1.41% 27
Thailand Thailand 93 0% 7
Tajikistan Tajikistan 98 0% 2
Turkmenistan Turkmenistan 99 +1.02% 1
Timor-Leste Timor-Leste 72 0% 27
Tonga Tonga 99 0% 1
Trinidad & Tobago Trinidad & Tobago 90 -2.17% 10
Tunisia Tunisia 96 +1.05% 4
Turkey Turkey 95 0% 5
Tuvalu Tuvalu 98 +8.89% 2
Tanzania Tanzania 91 +2.25% 9
Uganda Uganda 93 +1.09% 7
Ukraine Ukraine 92 +24.3% 8
Uruguay Uruguay 96 0% 4
United States United States 92 0% 8
Uzbekistan Uzbekistan 99 0% 1
St. Vincent & Grenadines St. Vincent & Grenadines 90 -9.09% 10
Venezuela Venezuela 68 +30.8% 30
Vietnam Vietnam 82 -6.82% 18
Vanuatu Vanuatu 70 0% 29
Samoa Samoa 87 +6.1% 13
Yemen Yemen 45 -15.1% 42
South Africa South Africa 80 -6.98% 20
Zambia Zambia 90 0% 10
Zimbabwe Zimbabwe 90 0% 10

The immunization rate for measles among children aged 12 to 23 months is a critical public health indicator reflecting the overall health of populations. This measure indicates the percentage of children who received one dose of a measles-containing vaccine by their first birthday. Measles is a highly contagious viral disease, and its vaccination is vital in preventing outbreaks and protecting community health.

Understanding the importance of high immunization rates cannot be overstated. A high percentage of immunization not only protects individual children from severe complications related to measles, such as pneumonia and encephalitis, but it also contributes to herd immunity. Herd immunity occurs when a sufficient proportion of a population is immunized, thereby reducing the overall spread of the disease. This protective barrier is particularly crucial for those who cannot be vaccinated, such as infants too young for vaccination or individuals with certain medical conditions. Moreover, measles vaccination is linked to wider public health successes, often viewed as a surrogate for the effectiveness of a country’s broader vaccination programs.

Immunization rates for measles correlate with various other social and health indicators. For instance, areas with a high rate of measles vaccination often exhibit better overall health care systems, robust infrastructure, and effective public health campaigns. Conversely, low immunization rates may tie to higher rates of infectious diseases, infant mortality, and other health-related issues. The median value for measles vaccination in 2023 stands at 90.0%, indicating a generally positive trend in global immunization efforts. However, this figure also highlights the work that still lies ahead, especially in lower-performing regions.

The top five areas with the highest immunization rates are Algeria, Andorra, Bahrain, Bhutan, and Cuba, all reporting a commendable 99.0%. This achievement can be attributed to comprehensive public health strategies, effective outreach programs, and consistent government support for vaccination initiatives. These countries have made significant investments in healthcare infrastructure, emphasizing preventive healthcare and community engagement. The successes in these areas serve as models for other nations aiming to improve their immunization rates.

On the other end of the spectrum, the lowest performers include Montenegro at 24.0%, North Korea at 28.0%, Central African Republic at 41.0%, Yemen at 45.0%, and Somalia at 46.0%. These figures reflect the challenges faced by these regions, including political instability, limited healthcare access, misinformation regarding vaccinations, and economic barriers that hinder vaccine distribution. The stark contrast between the top and bottom performers underscores the inequality in global health and the urgent need for targeted interventions to enhance vaccination coverage in underserved populations.

Several key factors impact measles immunization rates. Health workforce availability, vaccine accessibility, and education level concerning vaccine efficacy and safety all play pivotal roles. Countries with robust healthcare systems and extensive outreach programs typically showcase higher immunization rates. Public health messaging that addresses common misconceptions about vaccines can significantly influence a community’s willingness to participate in vaccination programs. Moreover, logistical hurdles, such as supply chain issues related to vaccine distribution, can also impede the successful implementation of immunization campaigns, particularly in rural or conflict-affected areas.

Strategies to improve measles vaccination rates can be multifaceted. Engaging communities through education and awareness campaigns is vital. Such efforts need to dispel myths about vaccinations and highlight their importance. Collaboration with local leaders and health workers can foster trust and encourage more families to vaccinate their children. Additionally, simplifying access to vaccines through mobile clinics or community-based health systems can mitigate barriers. Strengthening healthcare infrastructure to ensure that vaccines are available at the point of care is crucial for enhancing coverage. Alongside these strategies, governments must work to eliminate financial barriers, such as ensuring that vaccines are free of charge, which can be a major deterrent for low-income families.

Despite the ability of vaccination programs to save lives, flaws persist in global immunization efforts. Stagnation or decline in vaccination rates, as evidenced by the decline from 86.36% in 2018 to 83.13% in 2023, raises alarm bells. The COVID-19 pandemic disrupted routine immunization services, causing widespread delays and interruptions in vaccination campaigns. Addressing these declines will require innovative approaches to ensure that immunization remains a high priority. The fragile state of healthcare systems in low-income countries further complicates efforts to maintain robust vaccination rates. Thus, addressing systemic issues within healthcare delivery is just as important as enhancing vaccination programs. This holistic approach must also include strengthening emergency response mechanisms to ensure that vaccination campaigns can adapt to future challenges.

In conclusion, measles immunization rates for children aged 12 to 23 months serve as an important metric for public health. As the world strives to improve these rates, lessons must be learned from both achieving and failing countries. Collaborating on global health initiatives, strengthening health systems, eliminating barriers to access, and enhancing community outreach can drive progress. The ongoing commitment to vaccination as a critical public health intervention is essential, not only to combat measles but also to uphold the health of generations to come.

                    
# Install missing packages
import sys
import subprocess

def install(package):
subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# Required packages
for package in ['wbdata', 'country_converter']:
try:
__import__(package)
except ImportError:
install(package)

# Import libraries
import wbdata
import country_converter as coco
from datetime import datetime

# Define World Bank indicator code
dataset_code = 'SH.IMM.MEAS'

# Download data from World Bank API
data = wbdata.get_dataframe({dataset_code: 'value'},
date=(datetime(1960, 1, 1), datetime.today()),
parse_dates=True,
keep_levels=True).reset_index()

# Extract year
data['year'] = data['date'].dt.year

# Convert country names to ISO codes using country_converter
cc = coco.CountryConverter()
data['iso2c'] = cc.convert(names=data['country'], to='ISO2', not_found=None)
data['iso3c'] = cc.convert(names=data['country'], to='ISO3', not_found=None)

# Filter out rows where ISO codes could not be matched — likely not real countries
data = data[data['iso2c'].notna() & data['iso3c'].notna()]

# Sort for calculation
data = data.sort_values(['iso3c', 'year'])

# Calculate YoY absolute and percent change
data['value_change'] = data.groupby('iso3c')['value'].diff()
data['value_change_percent'] = data.groupby('iso3c')['value'].pct_change() * 100

# Calculate ranks (higher GDP per capita = better rank)
data['rank'] = data.groupby('year')['value'].rank(ascending=False, method='dense')

# Calculate rank change from previous year
data['rank_change'] = data.groupby('iso3c')['rank'].diff()

# Select desired columns
final_df = data[['country', 'iso2c', 'iso3c', 'year', 'value',
'value_change', 'value_change_percent', 'rank', 'rank_change']].copy()

# Optional: Add labels as metadata (could be useful for export or UI)
column_labels = {
'country': 'Country name',
'iso2c': 'ISO 2-letter country code',
'iso3c': 'ISO 3-letter country code',
'year': 'Year',
'value': 'GDP per capita (current US$)',
'value_change': 'Year-over-Year change in value',
'value_change_percent': 'Year-over-Year percent change in value',
'rank': 'Country rank by GDP per capita (higher = richer)',
'rank_change': 'Change in rank from previous year'
}

# Display first few rows
print(final_df.head(10))

# Optional: Save to CSV
#final_df.to_csv("gdp_per_capita_cleaned.csv", index=False)
                    
                
                    
# Check and install required packages
required_packages <- c("WDI", "countrycode", "dplyr")

for (pkg in required_packages) {
  if (!requireNamespace(pkg, quietly = TRUE)) {
    install.packages(pkg)
  }
}

# Load the necessary libraries
library(WDI)
library(dplyr)
library(countrycode)

# Define the dataset code (World Bank indicator code)
dataset_code <- 'SH.IMM.MEAS'

# Download data using WDI package
dat <- WDI(indicator = dataset_code)

# Filter only countries using 'is_country' from countrycode
# This uses iso2c to identify whether the entry is a recognized country
dat <- dat %>%
  filter(countrycode(iso2c, origin = 'iso2c', destination = 'country.name', warn = FALSE) %in%
           countrycode::codelist$country.name.en)

# Ensure dataset is ordered by country and year
dat <- dat %>%
  arrange(iso3c, year)

# Rename the dataset_code column to "value" for easier manipulation
dat <- dat %>%
  rename(value = !!dataset_code)

# Calculate year-over-year (YoY) change and percentage change
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(
    value_change = value - lag(value),                              # Absolute change from previous year
    value_change_percent = 100 * (value - lag(value)) / lag(value) # Percent change from previous year
  ) %>%
  ungroup()

# Calculate rank by year (higher value => higher rank)
dat <- dat %>%
  group_by(year) %>%
  mutate(rank = dense_rank(desc(value))) %>% # Rank countries by descending value
  ungroup()

# Calculate rank change (positive = moved up, negative = moved down)
dat <- dat %>%
  group_by(iso3c) %>%
  mutate(rank_change = rank - lag(rank)) %>% # Change in rank compared to previous year
  ungroup()

# Select and reorder final columns
final_data <- dat %>%
  select(
    country,
    iso2c,
    iso3c,
    year,
    value,
    value_change,
    value_change_percent,
    rank,
    rank_change
  )

# Add labels (variable descriptions)
attr(final_data$country, "label") <- "Country name"
attr(final_data$iso2c, "label") <- "ISO 2-letter country code"
attr(final_data$iso3c, "label") <- "ISO 3-letter country code"
attr(final_data$year, "label") <- "Year"
attr(final_data$value, "label") <- "GDP per capita (current US$)"
attr(final_data$value_change, "label") <- "Year-over-Year change in value"
attr(final_data$value_change_percent, "label") <- "Year-over-Year percent change in value"
attr(final_data$rank, "label") <- "Country rank by GDP per capita (higher = richer)"
attr(final_data$rank_change, "label") <- "Change in rank from previous year"

# Print the first few rows of the final dataset
print(head(final_data, 10))