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

Source: worldbank.org, 03.09.2025

Year: 2017

Flag Country Value Value change, % Rank
Armenia Armenia 92.4 +0.103% 47
Antigua & Barbuda Antigua & Barbuda 96.4 -0.428% 25
Australia Australia 96.1 -1.53% 28
Azerbaijan Azerbaijan 97.2 +2.03% 14
Burundi Burundi 93.9 -0.528% 42
Belgium Belgium 99 +0.29% 2
Burkina Faso Burkina Faso 77.9 +1.29% 71
Bulgaria Bulgaria 88 -1.79% 56
Bolivia Bolivia 91.7 +1.82% 48
Barbados Barbados 97.3 -0.255% 12
Bhutan Bhutan 89.1 +0.379% 55
Chile Chile 94.8 +0.81% 38
Côte d’Ivoire Côte d’Ivoire 92.5 +1.15% 46
Cameroon Cameroon 97 -1.73% 18
Colombia Colombia 97 +2.1% 19
Comoros Comoros 84.8 +0.773% 61
Cape Verde Cape Verde 93.9 +0.0011% 43
Costa Rica Costa Rica 96.6 -1.77% 23
Cuba Cuba 95.8 +1.29% 29
Cyprus Cyprus 97.4 +0.641% 10
Djibouti Djibouti 58.3 +5.17% 79
Dominican Republic Dominican Republic 94.2 -0.938% 40
Eritrea Eritrea 54.5 -13.2% 80
Spain Spain 97 -1.55% 16
Estonia Estonia 93.4 +0.289% 44
Finland Finland 98.6 -0.462% 4
United Kingdom United Kingdom 99.7 -0.0257% 1
Ghana Ghana 85.2 -7.27% 60
Gambia Gambia 76.4 +3.13% 72
Greece Greece 98 +0.0402% 7
Guatemala Guatemala 88 +1.11% 57
Honduras Honduras 79.6 +0.663% 70
Hungary Hungary 96.4 -0.307% 26
Indonesia Indonesia 97 +1.29% 17
Italy Italy 97.3 -0.404% 11
Jamaica Jamaica 82.6 -1.63% 66
Jordan Jordan 80.7 +6.66% 68
Cambodia Cambodia 91 -2.14% 50
South Korea South Korea 97.6 +0.352% 9
Kuwait Kuwait 90.2 -5.01% 52
Laos Laos 93.2 -1.91% 45
Liberia Liberia 44.4 +11.3% 81
St. Lucia St. Lucia 96.9 -1.76% 20
Latvia Latvia 96.4 +0.308% 27
Macao SAR China Macao SAR China 96.7 +0.14% 22
Morocco Morocco 96.9 +3.3% 21
Moldova Moldova 89.8 -0.525% 53
Maldives Maldives 94.5 -1.18% 39
North Macedonia North Macedonia 95.7 +4.56% 32
Mali Mali 71 +7.25% 76
Montenegro Montenegro 95.8 +1.57% 31
Mozambique Mozambique 91.5 -1.39% 49
Mauritania Mauritania 76.3 +6.53% 73
Niger Niger 71.3 +3.94% 75
Netherlands Netherlands 98.6 -1.31% 3
Pakistan Pakistan 70.3 -1.25% 77
Panama Panama 87.1 -0.945% 58
Philippines Philippines 94.9 +0.469% 36
Poland Poland 97 +1.02% 15
Portugal Portugal 98.1 +0.971% 6
Palestinian Territories Palestinian Territories 97.2 +2.02% 13
Qatar Qatar 98 +0.533% 8
Romania Romania 85.6 -2.07% 59
Rwanda Rwanda 96.5 -1.76% 24
Saudi Arabia Saudi Arabia 95.8 -2.73% 30
Sudan Sudan 62.4 +10.6% 78
Senegal Senegal 72.3 +3.39% 74
El Salvador El Salvador 80.5 -4.88% 69
Serbia Serbia 98.5 -0.641% 5
São Tomé & Príncipe São Tomé & Príncipe 94 +5.01% 41
Suriname Suriname 84.3 -4.79% 62
Slovakia Slovakia 82.2 +0.9% 67
Eswatini Eswatini 82.7 -2.71% 65
Togo Togo 95.5 -1.64% 34
Timor-Leste Timor-Leste 94.8 +2.25% 37
Turkey Turkey 95.2 +0.745% 35
Tanzania Tanzania 82.7 +0.284% 64
United States United States 95.6 -4.12% 33
Venezuela Venezuela 89.6 -1.59% 54
South Africa South Africa 90.3 -3.4% 51
Zambia Zambia 83.2 -4.8% 63

The Adjusted Net Enrollment Rate (ANER) for primary education, specifically focusing on male children of primary school age, serves as a critical indicator of educational access and gender parity within the educational landscape of various regions. It measures the proportion of the relevant age group that is enrolled in primary school and takes into account adjustments for over-age and under-age students. This indicator is essential for understanding how well a country is performing in ensuring that all primary-age children receive an education, which is a fundamental right and key to socio-economic development.

The importance of the ANER lies in its ability to provide insights into educational systems across different nations. A high ANER signifies that the majority of male children in the primary school age bracket are enrolled in school, reflecting a commitment to educational policies that promote access to schooling. Conversely, a low ANER indicates potential systemic barriers that may hinder enrollment, which may include socio-economic factors, cultural norms, or even political instability. Thus, education is not merely an isolated achievement but rather a cornerstone for enhancing future opportunities in health, income, and overall well-being.

The relationship between ANER and other educational indicators is profound. For instance, ANER correlates positively with literacy rates, economic growth, and workforce participation. Regions with higher ANER typically experience improved literacy levels, as enrollment is the first step towards gaining literacy skills and knowledge. Furthermore, improved educational access is crucial for driving economic growth, as an educated workforce is more productive and capable of adapting to technological advancements. The link between education and gender equality is another critical area; as education systems evolve to include and prioritize male and female children equitably, communities often become more resilient and dynamic.

However, numerous factors can significantly affect the ANER. Socio-economic status remains a predominant factor, where families with lower incomes may prioritize immediate economic contributions from children over long-term educational benefits. In many regions, especially in developing countries, cultural practices and gender biases might also influence enrollment rates, leading to disparities between male and female enrollments. Accessibility issues related to distance from schools, quality of education facilities, and the availability of qualified teachers can further complicate enrollment figures. Political factors, such as stability and governmental educational policies, also play a crucial role in determining ANER values.

To enhance the adjusted net enrollment rate for male children, various strategies have been adopted worldwide. First, increasing funding for education can significantly improve physical infrastructures, such as constructing more schools and ensuring they have the necessary resources to support effective learning. Moreover, community engagement initiatives can help to address cultural barriers by raising awareness of the importance of education and encouraging enrollment among boys. Scholarships and financial aid targeted at low-income families can also alleviate the burden associated with educational costs, thus promoting higher enrollment.

Despite the various approaches taken to improve the ANER, flaws still exist in the systems measuring this indicator. For one, variations in the definition and methodology for calculating enrollment can lead to inconsistencies and misrepresentations of the actual figures. For instance, the potential exclusion of certain demographics, such as marginalized groups or children with disabilities, can skew results and mask the broader challenges within a system. Moreover, simply increasing enrollment figures does not guarantee that children are receiving a quality education; thus, focusing solely on enrollment can overshadow the need for comprehensive measures that enhance both access and educational quality.

Examining the data from 2019, we see that the median ANER globally stands at 76.64%. This percentage illustrates that while there is substantial progress, barriers still remain in achieving universal enrollment. The top five areas, such as Ghana, show impressive ANER values with 86.25%, reflecting effective educational policies and community support in promoting primary education for all male children. However, regions like Djibouti, despite a reported lower rate of 67.03%, underscore the persistent challenges that many countries face against cultural and socio-economic hurdles.

In a historical context, the world values of ANER over the previous years depict a relatively stable trend, with figures hovering around 90% from 2010 to 2018. However, the consistency in enrollment does also suggest a plateauing effect, implying that more proactive measures are required to break through barriers toward achieving universal primary education. The stagnation may also hint at a need for a renewed focus on not just enrolling children, but ensuring they remain in school and receive quality education that truly prepares them for the future.

In conclusion, the Adjusted Net Enrollment Rate for male primary school-age children serves as a vital performance indicator for education systems worldwide. It has profound implications for literacy, economic development, and social equity. Addressing the myriad factors affecting ANER and implementing effective strategies to enhance enrollment, retention, and educational quality are essential to achieving educational equity for all children, which is an invaluable investment in our collective future.

                    
# 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.MA'

# 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.MA'

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