Adjusted net enrollment rate, primary (% of primary school age children)

Source: worldbank.org, 03.09.2025

Year: 2017

Flag Country Value Value change, % Rank
Albania Albania 97.8 +0.126% 44
United Arab Emirates United Arab Emirates 98.7 -0.663% 27
Argentina Argentina 99.5 +0.0311% 12
Armenia Armenia 92.3 -0.198% 96
Antigua & Barbuda Antigua & Barbuda 97.6 -0.0864% 51
Australia Australia 96.5 -0.282% 68
Austria Austria 88.6 -0.261% 106
Azerbaijan Azerbaijan 97.9 +3.12% 41
Burundi Burundi 95.5 +0.0543% 81
Belgium Belgium 99.1 +0.457% 20
Benin Benin 97 +0.698% 60
Burkina Faso Burkina Faso 77 +1.52% 125
Bulgaria Bulgaria 88.1 -1.54% 109
Bahrain Bahrain 98.7 +0.844% 28
Belarus Belarus 95.9 -0.445% 76
Belize Belize 99.4 +0.105% 15
Bolivia Bolivia 91.5 +1.83% 98
Brazil Brazil 97.6 +0.359% 50
Barbados Barbados 96.6 -1.52% 64
Brunei Brunei 96.1 -0.561% 73
Bhutan Bhutan 89.7 -0.0132% 103
Switzerland Switzerland 99.6 -0.137% 7
Chile Chile 94.8 +0.778% 86
Côte d’Ivoire Côte d’Ivoire 88.6 +1.96% 107
Cameroon Cameroon 92.9 -1.71% 91
Colombia Colombia 97.3 +2.01% 53
Comoros Comoros 84.2 +1.77% 116
Cape Verde Cape Verde 93 +0.135% 90
Costa Rica Costa Rica 96.6 -1.85% 65
Cuba Cuba 95.7 +1.22% 79
Cyprus Cyprus 97.8 +0.713% 45
Czechia Czechia 89.4 +0.623% 105
Germany Germany 90.4 -0.298% 100
Djibouti Djibouti 60 +4.75% 131
Denmark Denmark 98.9 -0.159% 25
Dominican Republic Dominican Republic 94.3 -0.841% 87
Algeria Algeria 99.5 +0.402% 11
Ecuador Ecuador 98 -0.0321% 39
Egypt Egypt 98.6 -0.0517% 30
Eritrea Eritrea 52.3 -13% 132
Spain Spain 97.3 -1.53% 54
Estonia Estonia 93.9 +0.263% 89
Finland Finland 98.7 -0.435% 29
France France 99.5 +0.0939% 13
United Kingdom United Kingdom 99.6 -0.0827% 9
Georgia Georgia 99.2 +1.32% 17
Ghana Ghana 85.7 -6% 112
Gambia Gambia 80.2 +3.22% 123
Greece Greece 98.2 +0.284% 37
Guatemala Guatemala 88.2 +1.15% 108
Hong Kong SAR China Hong Kong SAR China 96.5 -0.651% 66
Honduras Honduras 80.5 +0.644% 121
Croatia Croatia 98 +0.145% 40
Hungary Hungary 96.5 -0.374% 67
Indonesia Indonesia 94.9 +1.41% 84
Ireland Ireland 99.9 -0.0856% 3
Iran Iran 99.8 -0.0138% 5
Iceland Iceland 99.9 +0.405% 2
Israel Israel 97.3 +0.278% 55
Italy Italy 97.2 -0.466% 56
Jamaica Jamaica 82.9 -1.8% 118
Jordan Jordan 80.2 +7.04% 122
Kazakhstan Kazakhstan 99.1 -0.619% 21
Kyrgyzstan Kyrgyzstan 98.5 +0.0466% 33
Cambodia Cambodia 90.8 -2.34% 99
Kiribati Kiribati 96.1 -2.19% 75
South Korea South Korea 97.5 +0.29% 52
Kuwait Kuwait 91.7 -5.15% 97
Laos Laos 92.5 -1.61% 94
Liberia Liberia 44.6 +14.8% 133
St. Lucia St. Lucia 97.7 -0.279% 48
Sri Lanka Sri Lanka 99.3 +0.227% 16
Lithuania Lithuania 99.6 -0.143% 8
Luxembourg Luxembourg 98.4 -0.446% 35
Latvia Latvia 97.1 +0.327% 59
Macao SAR China Macao SAR China 96.8 +0.0389% 63
Morocco Morocco 96.9 +3.44% 61
Moldova Moldova 89.7 -0.357% 102
Maldives Maldives 95.4 -0.906% 82
Mexico Mexico 99.2 -0.0445% 19
North Macedonia North Macedonia 95.7 +4.38% 78
Mali Mali 67.3 +8.36% 127
Malta Malta 99.6 +1.11% 10
Myanmar (Burma) Myanmar (Burma) 97.7 +1.59% 49
Montenegro Montenegro 96.1 +2.57% 74
Mongolia Mongolia 98.9 +0.128% 26
Mozambique Mozambique 89.9 -0.984% 101
Mauritania Mauritania 78.3 +6.58% 124
Mauritius Mauritius 96.2 +0.886% 71
Namibia Namibia 98.1 -0.0808% 38
Niger Niger 66.5 +4.59% 128
Netherlands Netherlands 99 -0.639% 23
Norway Norway 99.9 +0.0765% 4
Nepal Nepal 96.5 -1.88% 69
New Zealand New Zealand 99.2 +0.662% 18
Oman Oman 97.9 -0.738% 42
Pakistan Pakistan 65.5 -0.796% 129
Panama Panama 86.8 -1.1% 110
Peru Peru 98.9 -0.687% 24
Philippines Philippines 95 +0.181% 83
Poland Poland 97.2 +1.09% 58
Portugal Portugal 97.7 +0.857% 47
Palestinian Territories Palestinian Territories 97.2 +1.48% 57
Qatar Qatar 97.8 +0.56% 46
Romania Romania 85.7 -2.03% 113
Russia Russia 97.8 +0.515% 43
Rwanda Rwanda 96.9 -1.93% 62
Saudi Arabia Saudi Arabia 95.8 -1.81% 77
Sudan Sudan 61.7 +4.26% 130
Senegal Senegal 76.5 +3.98% 126
Singapore Singapore 100 -0.0204% 1
El Salvador El Salvador 81 -4.94% 120
Serbia Serbia 98.6 -0.613% 32
São Tomé & Príncipe São Tomé & Príncipe 94 +5.96% 88
Suriname Suriname 86.1 -4.86% 111
Slovakia Slovakia 83.2 +1.14% 117
Slovenia Slovenia 98.3 +0.131% 36
Sweden Sweden 99.4 -0.181% 14
Eswatini Eswatini 82.6 -2.11% 119
Seychelles Seychelles 92.8 -1.93% 92
Togo Togo 92.6 -1.53% 93
Tajikistan Tajikistan 99.1 +1.38% 22
Timor-Leste Timor-Leste 96.2 +2.33% 72
Turkey Turkey 94.9 +0.776% 85
Tanzania Tanzania 84.6 +0.00332% 115
Uruguay Uruguay 99.6 -0.272% 6
United States United States 95.6 -4.1% 80
Uzbekistan Uzbekistan 98.6 +1.06% 31
St. Vincent & Grenadines St. Vincent & Grenadines 98.5 +1.11% 34
Venezuela Venezuela 89.7 -1.67% 104
Samoa Samoa 96.2 -0.154% 70
South Africa South Africa 92.4 -3.34% 95
Zambia Zambia 85.1 -3.55% 114

The Adjusted Net Enrollment Rate (ANER) is a critical indicator that assesses the percentage of primary school-age children who are enrolled in primary education, ensuring that the data represents the actual number of children in the designated age group. This figure provides valuable insights into the progress and effectiveness of national education systems, helping policymakers, educators, and international organizations to identify gaps and implement necessary interventions to enhance access to education.

The importance of the Adjusted Net Enrollment Rate cannot be overstated. It serves as a fundamental metric in evaluating educational progress towards achieving universal primary education, a target associated with the United Nations' Sustainable Development Goals (SDGs). High enrollment rates often correlate with improved literacy levels, economic growth, and social development, as education is universally acknowledged as a catalyst for change and empowerment in society. The ANER reveals not just how many children are enrolled, but also highlights discrepancies in access related to factors such as geography, gender, and socioeconomic status, which can inform targeted educational reforms and resource allocations.

In relation to other indicators, the ANER is interconnected with various educational, health, and social metrics. For instance, high ANERs are often positively correlated with low dropout rates, as families who can afford to send their children to school tend to do so consistently. Additionally, ANER relates closely to literacy rates, where regions with higher enrollment often display higher literacy levels amongst the youth. Furthermore, it can reflect broader societal issues, including poverty and child labor. In communities where children are required to work instead of attending school, ANER tends to be significantly lower, revealing a direct link between economic conditions and educational access.

Several factors influence the Adjusted Net Enrollment Rate, from economic circumstances to government policy and societal norms. In many regions, inadequate financial resources can lead to insufficient school infrastructure, lack of trained teachers, and limited educational materials. In contrast, systemic issues such as gender inequality can also play a significant role; in some cultures, girls may face additional barriers preventing their enrollment in school, which can cause noticeable discrepancies in enrollment rates between boys and girls. Cultural attitudes towards education also impact enrollment; communities that prioritize education are likely to support higher enrollment rates. Environmental factors, such as natural disasters or armed conflicts, can disrupt access to education, dramatically lowering enrollment rates in affected regions.

Addressing the challenges related to the ANER involves implementing effective strategies and solutions aimed at increasing enrollment rates. Governments and organizations can invest in educational infrastructure, ensuring schools are accessible and adequately equipped. Financial incentives for families, such as conditional cash transfers, can also alleviate economic burdens, encouraging families to enroll children in school. Awareness campaigns that underscore the importance of education in improving individual and community welfare can help change cultural perceptions, especially concerning the education of girls. Additionally, integrating flexible schooling options, such as evening classes or mobile schools, can accommodate children who might be unable to attend regular school hours due to family obligations or work.

Even with these strategies, there are inherent flaws and challenges in relying solely on the ANER as an indicator of educational accessibility. The metric focuses on enrollment but does not account for the quality of education received. High enrollment rates do not guarantee that students are learning or achieving basic competencies, and therefore, it is crucial to pair the ANER with other indicators, such as learning outcomes and graduation rates, for a more comprehensive picture of the educational landscape.

As of 2019, the global median Adjusted Net Enrollment Rate stood at 91.5%, slightly improved from previous years but reflecting ongoing challenges worldwide. Among the top-performing areas, Kazakhstan leads with an impressive ANER of 98.77%, followed closely by Nepal at 96.3%, and Ghana at 86.7%. Interestingly, Djibouti, at 67.03%, marks the bottom of the list, indicative of substantial barriers that remain in place for children seeking education in that region. This situation starkly contrasts the higher ANERs observed in countries like Kazakhstan and Nepal, prompting a closer examination of the factors contributing to educational success in these top areas.

The data over the years reveals a gradual increase in the global ANER, from 89.75% in 2007 to 90.51% in 2016, and indeed oscillating around the 90% mark through the years until 2018. While this steady improvement is promising, it still doesn't eliminate inequalities present in enrollment across different areas, highlighting the necessity for continuous vigilance and effort to advance educational equity. The patterns in top and bottom-performing areas call for a deeper exploration into local educational policies, socio-economic factors, and community involvement in education to ascertain how some regions can achieve near-universal enrollment while others lag significantly behind.

In summary, the Adjusted Net Enrollment Rate serves as a vital indicator of educational access for primary school-age children. Stakeholders are tasked with the challenge to leverage this data to enhance educational outcomes, ensuring that the benefits of education reach every child, irrespective of their background or circumstances. Through collaborative efforts and targeted strategies, it is possible to realize a future where education is not merely an aspiration but a tangible reality for all children around the globe.

                    
# 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 = 'SE.PRM.TENR'

# 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 <- 'SE.PRM.TENR'

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