Prevalence of stunting, height for age (% of children under 5)

Source: worldbank.org, 01.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 44.6 +16.8% 4
Burundi Burundi 55.8 +9.63% 1
Bangladesh Bangladesh 23.6 -15.7% 13
Belarus Belarus 1.2 0% 31
Central African Republic Central African Republic 37.9 -5.72% 5
Comoros Comoros 18.2 -41.5% 18
Finland Finland 1.8 +38.5% 30
Ghana Ghana 17.4 -0.571% 20
Guinea Guinea 26.1 -13.9% 9
Indonesia Indonesia 21.6 -11.5% 15
Kenya Kenya 17.6 -38.5% 19
Kuwait Kuwait 4.6 +6.98% 27
Libya Libya 7.9 -79.3% 25
Sri Lanka Sri Lanka 9.2 +24.3% 24
Lithuania Lithuania 0.9 +28.6% 32
Mexico Mexico 12.5 -2.34% 21
Mali Mali 21.8 -1.36% 14
Malta Malta 3.3 29
Mozambique Mozambique 36.7 -2.13% 6
Mauritania Mauritania 25.1 +44.3% 10
Malaysia Malaysia 21.2 -16.9% 16
Niger Niger 47.7 +7.43% 3
Nepal Nepal 24.8 -21.3% 11
Peru Peru 11.7 +1.74% 23
Qatar Qatar 6.3 +16.7% 26
Chad Chad 31.9 +2.57% 7
Thailand Thailand 12.4 -7.46% 22
Tanzania Tanzania 30 -8.26% 8
Uganda Uganda 24.4 -3.94% 12
United States United States 3.8 +11.8% 28
Vietnam Vietnam 18.9 -3.08% 17
Yemen Yemen 48.5 +7.54% 2

The prevalence of stunting, defined as a low height-for-age among children under five years of age, is a crucial indicator of public health and nutrition. Stunting results from chronic malnutrition, which hampers children's physical development and cognitive abilities. It reflects not only the nutritional deficiencies experienced by children but also the overall health environment, including sanitation, maternal health, and food security. Understanding this indicator is vital for assessing the effectiveness of health interventions and policies aimed at improving child development.

Stunting is an important public health issue because it has lasting impacts on individuals and societies. Children who experience stunting during their critical years of growth often face developmental challenges that extend beyond childhood. These include reduced educational attainment, poorer economic productivity in adulthood, and increased susceptibility to disease. Moreover, stunted children are at greater risk of dying from common infections, creating a vicious cycle of poverty and poor health outcomes in communities. As a result, the prevalence of stunting can serve as a barometer for the health and well-being of a population. Addressing stunting is recognized as essential to achieving several Sustainable Development Goals, particularly those related to health, education, and poverty reduction.

This indicator is inherently related to various other health and social determinants. It links closely with maternal health, where the nutritional status of women before and during pregnancy plays a critical role in the child's growth trajectory. Additionally, stunting correlates with household wealth and education levels. Families with better socioeconomic conditions and higher educational attainment are more likely to offer their children appropriate nutrition and health care. The prevalence of infectious diseases in a community also affects stunting rates, as children who suffer from frequent infections experience disruptions in nutrient absorption and overall health, further contributing to stunting.

Several factors influence the prevalence of stunting, including nutrition, hygiene, and health services. Nutritional intake is paramount; a deficiency in essential vitamins and minerals during the first thousand days of life (from conception to two years of age) can lead to stunted growth. Furthermore, a lack of access to clean water and sanitation can precipitate infections, adversely impacting a child's ability to thrive. Economic factors, including food insecurity and poverty, cannot be overlooked, as families may struggle to provide a balanced diet or adequate medical care due to financial constraints. Lastly, cultural practices and beliefs surrounding child-rearing and nutrition also play a significant role in determining dietary practices and the overall health status of children.

Addressing the issue of stunting requires a multi-faceted approach. Strategies to combat stunting often include improving maternal nutrition, providing nutritional supplements for young children, enhancing food security, and ensuring access to clean water and sanitation facilities. Education campaigns aimed at raising awareness about optimal feeding practices, including breastfeeding and the importance of introducing nutrient-dense foods at appropriate ages, can also be instrumental. Collaborating with local communities to build sustainable agricultural practices can help improve food availability and variety, further supporting child nutrition.

While many strategies and solutions exist to reduce the prevalence of stunting, there are inherent flaws and challenges. Often, the policies and programs addressing child nutrition and health may be inadequately funded or poorly implemented due to insufficient political will or lack of coordination among stakeholders. Additionally, there can be a focus on short-term outcomes, neglecting the long-term sustainability of interventions. Socioeconomic disparities can also hinder effectiveness, as marginalized communities may remain inaccessible to health services or nutrition programs. Furthermore, tracking progress can be challenging; without reliable data and monitoring frameworks, gauging the effectiveness of interventions can be difficult.

In looking at the specific data on stunting prevalence from 2023, we observe a median value of 8.3% recorded specifically for Jordan. Notably, Jordan appears on both the list of the top and bottom areas, indicating that this figure might represent a national average rather than varying regional data. With such a median prevalence, this suggests that while Jordan shows progress in child health and nutrition, there remains work to be done to further reduce stunting rates among its population. The lack of world values may suggest that there could be challenges in gathering international data this year, making it challenging to contextualize Jordan’s prevalence within a global framework. However, any indication of stagnation or slow improvements could be a cause for concern, emphasizing the need for ongoing commitment and interventions to address the root causes of stunting.

Ultimately, reducing the prevalence of stunting is not just a health issue but a developmental and social one as well. Through comprehensive strategies that address the multiple dimensions affecting child growth, stakeholders can foster an environment where all children can flourish physically and cognitively. By prioritizing investments in maternal and child health, and ensuring equitable access to nutrition and health services, societies can pave the way for healthier generations and break the cycle of poverty and malnutrition.

                    
# 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.STA.STNT.ZS'

# 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.STA.STNT.ZS'

# 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))