Mineral rents (% of GDP)

Source: worldbank.org, 03.09.2025

Year: 2021

Flag Country Value Value change, % Rank
Aruba Aruba 0 90
Afghanistan Afghanistan 0 90
Angola Angola 0 90
Albania Albania 0.18 +363% 63
Andorra Andorra 0 90
United Arab Emirates United Arab Emirates 0 90
Argentina Argentina 0.58 +125% 53
Armenia Armenia 6.79 +215% 17
American Samoa American Samoa 0 90
Antigua & Barbuda Antigua & Barbuda 0 90
Australia Australia 10.5 +156% 11
Austria Austria 0 90
Azerbaijan Azerbaijan 0.349 +45.5% 58
Burundi Burundi 0 90
Belgium Belgium 0 90
Benin Benin 0 90
Burkina Faso Burkina Faso 15.5 +255% 7
Bangladesh Bangladesh 0 90
Bulgaria Bulgaria 0.594 +70.4% 52
Bahrain Bahrain 0 90
Bahamas Bahamas 0 90
Bosnia & Herzegovina Bosnia & Herzegovina 0.0398 +41.3% 75
Belarus Belarus 0 90
Belize Belize 0 90
Bermuda Bermuda 0 90
Bolivia Bolivia 5.91 +1,202% 19
Brazil Brazil 4.49 +292% 24
Barbados Barbados 0 90
Brunei Brunei 0 90
Bhutan Bhutan 0.075 +43.2% 72
Botswana Botswana 0.242 +250% 61
Central African Republic Central African Republic 0.768 +309% 49
Canada Canada 1.18 +407% 43
Switzerland Switzerland 0 90
Chile Chile 16.2 +253% 5
China China 0.51 +203% 55
Côte d’Ivoire Côte d’Ivoire 2.5 +245% 34
Cameroon Cameroon 0 90
Congo - Kinshasa Congo - Kinshasa 28.8 +411% 1
Congo - Brazzaville Congo - Brazzaville 0 90
Colombia Colombia 0.91 +172% 47
Comoros Comoros 0 90
Cape Verde Cape Verde 0 90
Costa Rica Costa Rica 0 90
Curaçao Curaçao 0 90
Cayman Islands Cayman Islands 0 90
Cyprus Cyprus 0.0119 +67.4% 81
Czechia Czechia 0 90
Germany Germany 0 -100% 90
Djibouti Djibouti 0 90
Dominica Dominica 0 90
Denmark Denmark 0 90
Dominican Republic Dominican Republic 2.04 +71.1% 36
Algeria Algeria 0.00379 +88.4% 87
Ecuador Ecuador 0 90
Egypt Egypt 0 90
Spain Spain 0.0965 +430% 70
Estonia Estonia 0 90
Ethiopia Ethiopia 0.265 +213% 60
Finland Finland 0.109 +663% 67
Fiji Fiji 1.13 +135% 44
France France 0 90
Faroe Islands Faroe Islands 0 90
Micronesia (Federated States of) Micronesia (Federated States of) 0 90
Gabon Gabon 0.0225 +184% 78
United Kingdom United Kingdom 0.00006 +103% 89
Georgia Georgia 1.28 +55.5% 42
Ghana Ghana 5.17 +131% 22
Guinea Guinea 0 90
Gambia Gambia 0 90
Guinea-Bissau Guinea-Bissau 0 90
Equatorial Guinea Equatorial Guinea 0 90
Greece Greece 0.0522 +284% 74
Grenada Grenada 0 90
Guatemala Guatemala 1.12 +217% 45
Guam Guam 0 90
Guyana Guyana 9.38 +253% 13
Hong Kong SAR China Hong Kong SAR China 0 90
Honduras Honduras 0.385 +50,387% 57
Croatia Croatia 0 90
Haiti Haiti 0 90
Hungary Hungary 0 90
Indonesia Indonesia 1.91 +304% 38
India India 1.32 +91.5% 41
Ireland Ireland 0.0362 +258% 76
Iran Iran 3.36 +132% 30
Iraq Iraq 0 90
Iceland Iceland 0 90
Israel Israel 0 90
Italy Italy 0 90
Jamaica Jamaica 0 90
Jordan Jordan 0 90
Japan Japan 0.00721 -89.4% 84
Kazakhstan Kazakhstan 9.1 +93.6% 14
Kenya Kenya 0.00566 +213% 85
Kyrgyzstan Kyrgyzstan 11.2 +77.3% 10
Cambodia Cambodia 0 90
Kiribati Kiribati 0 90
St. Kitts & Nevis St. Kitts & Nevis 0 90
South Korea South Korea 0.000483 -99.4% 88
Laos Laos 3.89 +216% 27
Lebanon Lebanon 0 90
Liberia Liberia 5.44 20
Libya Libya 0 90
St. Lucia St. Lucia 0 90
Sri Lanka Sri Lanka 0 90
Lesotho Lesotho 0 90
Lithuania Lithuania 0 90
Luxembourg Luxembourg 0 90
Latvia Latvia 0 90
Macao SAR China Macao SAR China 0 90
Morocco Morocco 0.266 +80.2% 59
Monaco Monaco 0 90
Moldova Moldova 0 90
Madagascar Madagascar 0 90
Maldives Maldives 0 90
Mexico Mexico 1.36 +194% 40
Marshall Islands Marshall Islands 0 90
North Macedonia North Macedonia 0 90
Mali Mali 16.2 +126% 6
Malta Malta 0 90
Myanmar (Burma) Myanmar (Burma) 2 +289% 37
Montenegro Montenegro 0.0136 -6.72% 79
Mongolia Mongolia 26.6 +222% 3
Mozambique Mozambique 0.14 +232% 66
Mauritania Mauritania 9.59 +1,475% 12
Mauritius Mauritius 0 90
Malawi Malawi 0.00565 +87% 86
Malaysia Malaysia 0 90
Namibia Namibia 3.17 +206% 31
New Caledonia New Caledonia 16.8 4
Niger Niger 0.83 +298% 48
Nigeria Nigeria 0.00801 +60.3% 83
Nicaragua Nicaragua 2.68 +5,275% 33
Netherlands Netherlands 0 90
Norway Norway 0 90
Nepal Nepal 0 90
Nauru Nauru 0 90
New Zealand New Zealand 0.0962 +147% 71
Oman Oman 0 90
Pakistan Pakistan 0.0687 +102% 73
Panama Panama 3.58 +763% 29
Peru Peru 12.1 +240% 9
Philippines Philippines 1.52 +280% 39
Palau Palau 0 90
Papua New Guinea Papua New Guinea 14.4 +375% 8
Poland Poland 0.478 +194% 56
Puerto Rico Puerto Rico 0 90
Portugal Portugal 0.149 +83.9% 65
Paraguay Paraguay 0 90
Palestinian Territories Palestinian Territories 0 90
French Polynesia French Polynesia 0 90
Qatar Qatar 0 90
Romania Romania 0.0348 +181% 77
Russia Russia 2.05 +106% 35
Rwanda Rwanda 0 90
Saudi Arabia Saudi Arabia 0.162 +167% 64
Sudan Sudan 6.63 +64% 18
Senegal Senegal 2.9 +128% 32
Singapore Singapore 0 90
Solomon Islands Solomon Islands 0 90
Sierra Leone Sierra Leone 0.213 +4,984% 62
El Salvador El Salvador 0 90
Somalia Somalia 0 90
Serbia Serbia 0.659 +252% 50
São Tomé & Príncipe São Tomé & Príncipe 0 90
Suriname Suriname 0 90
Slovakia Slovakia 0.0117 +34.5% 82
Slovenia Slovenia 0 90
Sweden Sweden 1 +464% 46
Eswatini Eswatini 0 90
Seychelles Seychelles 0 90
Turks & Caicos Islands Turks & Caicos Islands 0 90
Chad Chad 0 90
Togo Togo 4.88 +204% 23
Thailand Thailand 0 90
Tajikistan Tajikistan 7.09 +90.1% 16
Timor-Leste Timor-Leste 0 90
Tonga Tonga 0 90
Trinidad & Tobago Trinidad & Tobago 0 90
Tunisia Tunisia 0 90
Turkey Turkey 0.634 +219% 51
Tuvalu Tuvalu 0 90
Tanzania Tanzania 4.03 +226% 26
Uganda Uganda 0 90
Ukraine Ukraine 5.32 +4,286% 21
Uruguay Uruguay 0.0122 80
United States United States 0.102 +377% 69
Uzbekistan Uzbekistan 8.5 +29% 15
St. Vincent & Grenadines St. Vincent & Grenadines 0 90
Vietnam Vietnam 0.102 +335% 68
Vanuatu Vanuatu 0 90
Samoa Samoa 0 90
Kosovo Kosovo 0.55 +201% 54
South Africa South Africa 3.83 +169% 28
Zambia Zambia 28.2 +243% 2
Zimbabwe Zimbabwe 4.24 +88.8% 25

                    
# 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 = 'NY.GDP.MINR.RT.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 <- 'NY.GDP.MINR.RT.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))