Prevalence of underweight, weight for age (% of children under 5)

Source: worldbank.org, 01.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 18.4 -3.66% 7
Burundi Burundi 27.6 -0.361% 3
Bangladesh Bangladesh 21.7 -3.98% 5
Central African Republic Central African Republic 18.4 -10.2% 7
Comoros Comoros 9.1 -46.2% 19
Ghana Ghana 12 -4.76% 14
Guinea Guinea 15 -7.98% 13
Indonesia Indonesia 16.8 -1.18% 10
Kenya Kenya 9.8 -24.6% 17
Kuwait Kuwait 2.9 +20.8% 23
Libya Libya 4.3 -63.2% 21
Sri Lanka Sri Lanka 15.3 +25.4% 12
Mexico Mexico 4.2 0% 22
Mali Mali 18.5 +5.71% 6
Malta Malta 0.7 26
Mozambique Mozambique 15.4 +4.05% 11
Mauritania Mauritania 22.4 +51.4% 4
Malaysia Malaysia 15.3 +3.38% 12
Niger Niger 34.6 +4.22% 2
Nepal Nepal 18.3 -25% 8
Peru Peru 2.4 +14.3% 24
Qatar Qatar 2.1 +5% 25
Chad Chad 18.2 -15% 9
Thailand Thailand 6.7 -13% 20
Tanzania Tanzania 11.4 +5.56% 15
Uganda Uganda 9.7 +27.6% 18
Vietnam Vietnam 10.2 -12.1% 16
Yemen Yemen 40.7 +28.8% 1

The prevalence of underweight, specifically weight for age (% of children under 5), is a critical indicator in understanding child malnutrition and overall health in a population. This measure assesses the proportion of children under the age of five who have a weight that is significantly lower than what is considered healthy for their age. A low weight-for-age can highlight not only direct issues related to nutrition but also indirect factors like healthcare access, socioeconomic status, and the efficacy of public health interventions.

Understanding the prevalence of underweight children is crucial because it serves as a marker for broader public health issues. Underweight in children can lead to a myriad of developmental problems, including delayed physical growth, cognitive difficulties, and increased susceptibility to diseases. These implications extend beyond the childhood years, influencing educational attainment and economic productivity in later life. Thus, addressing the issue of underweight children can significantly impact the socio-economic fabric of a society.

The current global median value for the prevalence of underweight children under age five stands at 2.5% in 2023, with Jordan having matched this median. Interestingly, Jordan is also listed among both the top and bottom areas for this indicator, reflecting how certain regions can simultaneously exhibit significant public health challenges. The prevalence rate represents a notable decline from the rates observed in the early 2000s, when global figures indicated rates as high as 20.84% in 2000, gradually decreasing to approximately 12.33% by 2022. This trajectory hints at a concerted global effort to combat malnutrition, yet the persistence of underweight conditions in some regions, including Jordan, underscores ongoing challenges.

The importance of this indicator becomes even more pronounced when related to other developmental and health indicators. For example, regions that exhibit higher rates of underweight children often correspond with elevated levels of maternal malnutrition, limited access to healthcare services, and educational disparities. Moreover, the prevalence of stunting and wasting among children can also be interlinked with underweight measurements, offering a fuller picture of childhood malnutrition. Therefore, monitoring and addressing underweight prevalence can lead to improvements across various health domains, enhancing maternal and child health care systems.

Several interconnected factors can influence the prevalence of underweight in young children. Socioeconomic status is arguably the most significant, as families with lower income levels may struggle to provide adequate nutrition due to financial constraints. Additionally, maternal education plays a crucial role; better-informed mothers are more likely to make healthful choices regarding diet and nutrition for their children. Access to clean water and sanitation facilities also directly relates to health outcomes, as children in impoverished conditions may face an increased risk of infections, further complicating their nutritional status.

Furthermore, cultural practices can influence dietary choices and feeding practices for young children, emphasizing the importance of culturally relevant interventions. These factors can create a cyclical pattern where underweight prevalence can persist across generations. Addressing these underlying factors in holistic and sustainable ways is imperative in reducing the rates of underweight children globally.

To effectively combat underweight prevalence, various strategies can be employed. Multisectoral approaches are essential, bringing together stakeholders in education, healthcare, and social services to create comprehensive nutritional programs. Community-based initiatives can facilitate better education regarding nutrition, while social protection programs can provide financial assistance to low-income families. Nutrition-specific interventions, such as promoting breastfeeding, fortifying foods, and ensuring access to diverse diets, are vital to improving the nutritional status of children.

Policy interventions must also reflect a commitment to tackling the root causes of underweight prevalence. Governments can enhance food security by investing in agricultural development and ensuring that vulnerable populations have access to nutritious food. Moreover, the implementation of health programs that focus on prenatal and postnatal care can significantly improve children’s health outcomes.

However, it is essential to recognize potential flaws in current strategies aimed at reducing underweight prevalence. In some cases, interventions may not be well-coordinated or tailored to the unique needs of specific populations, leading to ineffective solutions. Additionally, there can be a lack of sufficient data collection and monitoring, which hampers the ability to evaluate success or failure adequately. Relying solely on quantitative targets without addressing qualitative improvements in child health and nutrition may result in superficial success, leaving underlying issues unresolved.

The steady decline in global rates of underweight children illustrates significant progress in tackling malnutrition issues. Yet, with a median of 2.5% in regions like Jordan, it is clear that there remain critical areas that require attention and ongoing support. By employing a multifaceted approach to address the various aspects influencing child nutrition and healthcare access, it is possible to diminish the prevalence of underweight and thereby improve the future of countless children worldwide.

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