Net official development assistance and official aid received (current US$)

Source: worldbank.org, 03.09.2025

Year: 2022

Flag Country Value Value change, % Rank
Afghanistan Afghanistan 3,893,270,020 -17% 7
Angola Angola 97,480,003 -60.6% 107
Albania Albania 315,510,010 -50.2% 80
Argentina Argentina 384,070,007 +147% 71
Armenia Armenia 300,350,006 +85.5% 81
Azerbaijan Azerbaijan 47,169,998 +383% 124
Burundi Burundi 576,590,027 -5.2% 61
Benin Benin 844,369,995 -0.66% 46
Burkina Faso Burkina Faso 1,394,810,059 -13.4% 32
Bangladesh Bangladesh 5,192,790,039 +2.04% 4
Bosnia & Herzegovina Bosnia & Herzegovina 283,899,994 -49.7% 85
Belarus Belarus 16,309,999 -88.3% 128
Belize Belize 20,379,999 -73.6% 127
Bolivia Bolivia 334,109,985 -34.1% 77
Brazil Brazil 577,010,010 -48.2% 60
Bhutan Bhutan 194,440,002 +52.7% 94
Botswana Botswana 89,519,997 -7.17% 112
Central African Republic Central African Republic 683,059,998 +3.61% 55
China China -282,320,007 -50% 136
Côte d’Ivoire Côte d’Ivoire 1,974,449,951 +25.3% 19
Cameroon Cameroon 1,177,569,946 +3.21% 37
Congo - Kinshasa Congo - Kinshasa 3,249,770,020 -9.98% 9
Congo - Brazzaville Congo - Brazzaville 707,530,029 +247% 53
Colombia Colombia 1,883,310,059 -1.75% 21
Comoros Comoros 137,279,999 -10.6% 100
Cape Verde Cape Verde 82,540,001 -43.2% 113
Costa Rica Costa Rica 639,890,015 +707% 58
Cuba Cuba 137,490,005 -9.78% 99
Djibouti Djibouti 59,169,998 -66.4% 118
Dominica Dominica 59,520,000 -24.7% 117
Dominican Republic Dominican Republic 367,000,000 -18.2% 75
Algeria Algeria 214,990,005 +0.252% 92
Ecuador Ecuador 376,179,993 +25.1% 73
Egypt Egypt 5,817,100,098 -26.7% 3
Eritrea Eritrea 54,709,999 +24.5% 121
Ethiopia Ethiopia 4,925,600,098 +21% 5
Fiji Fiji 358,049,988 -41.2% 76
Micronesia (Federated States of) Micronesia (Federated States of) 150,389,999 +15% 96
Gabon Gabon 133,259,995 +35.2% 101
Georgia Georgia 375,910,004 -51.1% 74
Ghana Ghana 1,045,640,015 -15.6% 40
Guinea Guinea 499,630,005 -15.6% 66
Gambia Gambia 272,679,993 +10% 86
Guinea-Bissau Guinea-Bissau 148,639,999 -12.1% 97
Equatorial Guinea Equatorial Guinea 11,180,000 -12.5% 132
Grenada Grenada -93,639,999 -237% 135
Guatemala Guatemala 437,750,000 -14.6% 69
Guyana Guyana 198,979,996 +43.3% 93
Honduras Honduras 785,440,002 +27.2% 49
Haiti Haiti 890,719,971 -6.39% 44
Indonesia Indonesia 662,700,012 +5.88% 56
India India 2,831,239,990 -9.7% 10
Iran Iran 289,589,996 -4.67% 83
Iraq Iraq 1,569,810,059 -13.3% 26
Jamaica Jamaica 95,139,999 +62.4% 110
Jordan Jordan 1,985,739,990 -42.4% 18
Kazakhstan Kazakhstan 73,820,000 +28.3% 115
Kenya Kenya 2,652,010,010 -16.5% 12
Kyrgyzstan Kyrgyzstan 729,700,012 +61.3% 51
Cambodia Cambodia 1,546,939,941 +13.2% 28
Kiribati Kiribati 91,099,998 +25% 111
Laos Laos 547,739,990 -4.85% 63
Lebanon Lebanon 1,426,089,966 +1.92% 30
Liberia Liberia 484,750,000 -20.1% 68
Libya Libya 263,950,012 -23.2% 88
St. Lucia St. Lucia 33,410,000 -66.6% 126
Sri Lanka Sri Lanka 11,050,000 -92.8% 133
Lesotho Lesotho 153,289,993 -14.5% 95
Morocco Morocco 1,414,800,049 +46.4% 31
Moldova Moldova 884,500,000 +48.4% 45
Madagascar Madagascar 999,890,015 -6.4% 43
Maldives Maldives 119,120,003 +5.97% 105
Mexico Mexico 495,480,011 -12.1% 67
Marshall Islands Marshall Islands 140,339,996 +31% 98
North Macedonia North Macedonia 224,050,003 -33.8% 90
Mali Mali 1,198,290,039 -16.6% 36
Myanmar (Burma) Myanmar (Burma) 1,003,340,027 -33.4% 42
Montenegro Montenegro 102,720,001 -22.9% 106
Mongolia Mongolia 284,549,988 +0.894% 84
Mozambique Mozambique 2,558,689,941 +12.1% 13
Mauritania Mauritania 327,730,011 -23.6% 78
Mauritius Mauritius 76,199,997 -74% 114
Malawi Malawi 1,345,239,990 +14.2% 33
Malaysia Malaysia 4,890,000 -66% 134
Namibia Namibia 325,309,998 +78.2% 79
Niger Niger 2,035,040,039 +12.6% 17
Nigeria Nigeria 4,443,259,766 +26% 6
Nicaragua Nicaragua 1,127,260,010 +49.5% 38
Nepal Nepal 1,208,219,971 -24.4% 35
Nauru Nauru 35,490,002 +5.12% 125
Pakistan Pakistan 1,841,030,029 -37% 22
Panama Panama 130,169,998 +42.4% 102
Peru Peru 829,349,976 +173% 47
Philippines Philippines 1,612,479,980 -1.31% 24
Palau Palau 55,669,998 +12.6% 119
Papua New Guinea Papua New Guinea 661,169,983 -44.2% 57
North Korea North Korea 12,830,000 -36.3% 131
Paraguay Paraguay 96,720,001 -44.8% 108
Palestinian Territories Palestinian Territories 2,236,189,941 +3.51% 14
Rwanda Rwanda 1,076,819,946 -19.1% 39
Sudan Sudan 1,558,410,034 -59.2% 27
Senegal Senegal 1,451,839,966 +4.49% 29
Solomon Islands Solomon Islands 252,729,996 -4.53% 89
Sierra Leone Sierra Leone 523,469,971 -26.2% 64
El Salvador El Salvador 707,969,971 +232% 52
Somalia Somalia 1,937,760,010 -19.5% 20
Serbia Serbia 510,130,005 -4.34% 65
South Sudan South Sudan 2,077,149,902 -1.98% 16
São Tomé & Príncipe São Tomé & Príncipe 53,130,001 -26.4% 122
Suriname Suriname 54,779,999 +90.3% 120
Eswatini Eswatini 96,620,003 -22.7% 109
Syria Syria 8,277,419,922 -14.6% 2
Chad Chad 694,119,995 -4.97% 54
Togo Togo 429,570,007 +22.5% 70
Thailand Thailand 554,000,000 +318% 62
Tajikistan Tajikistan 589,000,000 +5.92% 59
Turkmenistan Turkmenistan 15,090,000 -47.4% 130
Timor-Leste Timor-Leste 223,559,998 -12.4% 91
Tonga Tonga 295,049,988 +161% 82
Tunisia Tunisia 1,212,290,039 +10.9% 34
Turkey Turkey 800,270,020 -24.5% 48
Tuvalu Tuvalu 63,560,001 +76.5% 116
Tanzania Tanzania 2,661,899,902 +1.67% 11
Uganda Uganda 2,113,840,088 -17.6% 15
Ukraine Ukraine 28,732,429,688 +1,197% 1
Uzbekistan Uzbekistan 1,591,819,946 +37% 25
St. Vincent & Grenadines St. Vincent & Grenadines 15,490,000 -87.7% 129
Venezuela Venezuela 272,250,000 -0.329% 87
Vietnam Vietnam 48,919,998 -90.7% 123
Vanuatu Vanuatu 125,059,998 -25.1% 104
Samoa Samoa 126,269,997 +49.6% 103
Kosovo Kosovo 381,380,005 -15.9% 72
Yemen Yemen 3,636,909,912 -6.5% 8
South Africa South Africa 1,028,579,956 -1.25% 41
Zambia Zambia 1,829,949,951 +68.2% 23
Zimbabwe Zimbabwe 782,289,978 -20.6% 50

                    
# 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 = 'DT.ODA.ALLD.CD'

# 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 <- 'DT.ODA.ALLD.CD'

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