This analysis seeks to help policymakers and multi-lateral development banks determine which countries would be promising candidates for debt forgiveness/restructuring based on their climate vulnerability and debt sustainability. This information will be presented alongside existing climate finance disbursed through the U.N. Green Climate Fund to help assess the amount of financing gap that a debt swap could help close.
To do this analysis, I will integrate four data sets and create a Shiny app to interactively determine which countries meet certain criterias of interest to be considered for a debt-for-climate swap.
Join datasets based on ISO3 codes
Select specific variables of interest
Clean up variable names and values
Export processed file
ND_Gain <- here("00_data_raw","1. ND-GAIN_vulnerability data.xlsx") %>% read_excel()
IMF_WEO2022 <- here("00_data_raw","2. country_features_2022-10.csv") %>% read_csv()
## Rows: 217 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (4): country_name, ISO3, wb_income_group, wb_region
## dbl (4): debt_gross_percent_of_gdp, nominal_gdp_bn_ppp, nominal_gdp_per_capi...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
GCF <- here("00_data_raw","3. GCF_ODL-Export-countries-1666878279196.xlsx") %>% read_excel()
WB_DSA <- here("00_data_raw","4. World Bank_DSA.xlsx") %>% read_excel()
ND_Gain
## # A tibble: 192 × 30
## ISO3 Name `1995` `1996` `1997` `1998` `1999` `2000` `2001` `2002` `2003`
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 CHE Switzer… 0.279 0.279 0.277 0.273 0.270 0.266 0.266 0.266 0.265
## 2 NOR Norway 0.278 0.278 0.278 0.278 0.277 0.276 0.275 0.262 0.261
## 3 AUT Austria 0.294 0.293 0.293 0.292 0.292 0.291 0.291 0.291 0.290
## 4 DEU Germany 0.314 0.315 0.315 0.314 0.314 0.301 0.301 0.301 0.300
## 5 SWE Sweden 0.297 0.298 0.298 0.297 0.297 0.297 0.296 0.296 0.296
## 6 GBR United … 0.301 0.301 0.301 0.301 0.300 0.287 0.287 0.287 0.287
## 7 ESP Spain 0.312 0.309 0.308 0.308 0.308 0.307 0.307 0.306 0.306
## 8 CAN Canada 0.317 0.317 0.317 0.306 0.316 0.311 0.306 0.306 0.305
## 9 LUX Luxembo… 0.310 0.310 0.310 0.309 0.309 0.308 0.307 0.308 0.307
## 10 CZE Czech R… 0.305 0.305 0.304 0.302 0.302 0.299 0.299 0.297 0.296
## # … with 182 more rows, and 19 more variables: `2004` <dbl>, `2005` <dbl>,
## # `2006` <dbl>, `2007` <dbl>, `2008` <dbl>, `2009` <dbl>, `2010` <dbl>,
## # `2011` <dbl>, `2012` <dbl>, `2013` <dbl>, `2014` <dbl>, `2015` <dbl>,
## # `2016` <dbl>, `2017` <dbl>, `2018` <dbl>, `2019` <dbl>, `2020` <dbl>,
## # `Rank Percentile` <dbl>, `Vulnerability Level` <chr>
IMF_WEO2022
## # A tibble: 217 × 8
## country_name ISO3 wb_income_group wb_region debt_gross_perc…
## <chr> <chr> <chr> <chr> <dbl>
## 1 Aruba ABW High Latin America & … 95.0
## 2 Afghanistan AFG Low South Asia 7.40
## 3 Angola AGO Lower Middle Sub-Saharan Afri… 56.6
## 4 Albania ALB Upper Middle Europe & Central… 70.3
## 5 Andorra AND High Europe & Central… 43.0
## 6 United Arab Emirates ARE High Middle East & No… 30.7
## 7 Argentina ARG Upper Middle Latin America & … 76.0
## 8 Armenia ARM Upper Middle Europe & Central… 52.3
## 9 American Samoa ASM Upper Middle East Asia & Paci… NA
## 10 Antigua & Barbuda ATG High Latin America & … 91.2
## # … with 207 more rows, and 3 more variables: nominal_gdp_bn_ppp <dbl>,
## # nominal_gdp_per_capita_ppp <dbl>, population_mn <dbl>
GCF
## # A tibble: 154 × 9
## ISO3 `Country Name` Region SIDS LDCs `# RP` `# FA` `RP Financing $`
## <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 AFG Afghanistan Asia-Pa… FALSE TRUE 3 1 1599987
## 2 ALB Albania Eastern… FALSE FALSE 5 4 4440830
## 3 DZA Algeria Africa FALSE FALSE 1 0 300000
## 4 AND Andorra Western… FALSE FALSE 0 0 NA
## 5 AGO Angola Africa FALSE TRUE 3 0 1578581
## 6 ATG Antigua and Barbuda Latin A… TRUE FALSE 9 2 6505514.
## 7 ARG Argentina Latin A… FALSE FALSE 9 4 5154480
## 8 ARM Armenia Eastern… FALSE FALSE 5 5 4360693.
## 9 AZE Azerbaijan Eastern… FALSE FALSE 4 0 3841560
## 10 BHS Bahamas Latin A… TRUE FALSE 8 4 3699701.
## # … with 144 more rows, and 1 more variable: `FA Financing $` <dbl>
WB_DSA
## # A tibble: 69 × 5
## ISO3 Country `Risk of exter…` `Risk of overa…` `Date of Publi…`
## <chr> <chr> <chr> <chr> <chr>
## 1 AFG Afghanistan High High 44733
## 2 BGD Bangladesh Low Low 44642
## 3 BEN Benin Moderate Moderate 44764
## 4 BTN Bhutan Moderate Moderate 44703
## 5 BFA Burkina Faso Moderate Moderate 44885
## 6 BDI Burundi High High 44764
## 7 CPV Cabo Verde Moderate High 44734
## 8 KHM Cambodia Low Low 44886
## 9 CMR Cameroon High High 44764
## 10 CAF Central African Rep… High High 44582
## # … with 59 more rows
#Joining the data sets by iso3 codes
Debt4Climate_raw <- ND_Gain %>%
left_join(WB_DSA, by = c("ISO3")) %>%
left_join(GCF, by = c("ISO3")) %>%
left_join(IMF_WEO2022, by = c("ISO3"))
Debt4Climate_raw
## # A tibble: 192 × 49
## ISO3 Name `1995` `1996` `1997` `1998` `1999` `2000` `2001` `2002` `2003`
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 CHE Switzer… 0.279 0.279 0.277 0.273 0.270 0.266 0.266 0.266 0.265
## 2 NOR Norway 0.278 0.278 0.278 0.278 0.277 0.276 0.275 0.262 0.261
## 3 AUT Austria 0.294 0.293 0.293 0.292 0.292 0.291 0.291 0.291 0.290
## 4 DEU Germany 0.314 0.315 0.315 0.314 0.314 0.301 0.301 0.301 0.300
## 5 SWE Sweden 0.297 0.298 0.298 0.297 0.297 0.297 0.296 0.296 0.296
## 6 GBR United … 0.301 0.301 0.301 0.301 0.300 0.287 0.287 0.287 0.287
## 7 ESP Spain 0.312 0.309 0.308 0.308 0.308 0.307 0.307 0.306 0.306
## 8 CAN Canada 0.317 0.317 0.317 0.306 0.316 0.311 0.306 0.306 0.305
## 9 LUX Luxembo… 0.310 0.310 0.310 0.309 0.309 0.308 0.307 0.308 0.307
## 10 CZE Czech R… 0.305 0.305 0.304 0.302 0.302 0.299 0.299 0.297 0.296
## # … with 182 more rows, and 38 more variables: `2004` <dbl>, `2005` <dbl>,
## # `2006` <dbl>, `2007` <dbl>, `2008` <dbl>, `2009` <dbl>, `2010` <dbl>,
## # `2011` <dbl>, `2012` <dbl>, `2013` <dbl>, `2014` <dbl>, `2015` <dbl>,
## # `2016` <dbl>, `2017` <dbl>, `2018` <dbl>, `2019` <dbl>, `2020` <dbl>,
## # `Rank Percentile` <dbl>, `Vulnerability Level` <chr>, Country <chr>,
## # `Risk of external debt distress` <chr>,
## # `Risk of overall debt distress` <chr>, `Date of Publication` <chr>, …
#Narrowing variables of interest
colnames(Debt4Climate_raw)
## [1] "ISO3" "Name"
## [3] "1995" "1996"
## [5] "1997" "1998"
## [7] "1999" "2000"
## [9] "2001" "2002"
## [11] "2003" "2004"
## [13] "2005" "2006"
## [15] "2007" "2008"
## [17] "2009" "2010"
## [19] "2011" "2012"
## [21] "2013" "2014"
## [23] "2015" "2016"
## [25] "2017" "2018"
## [27] "2019" "2020"
## [29] "Rank Percentile" "Vulnerability Level"
## [31] "Country" "Risk of external debt distress"
## [33] "Risk of overall debt distress" "Date of Publication"
## [35] "Country Name" "Region"
## [37] "SIDS" "LDCs"
## [39] "# RP" "# FA"
## [41] "RP Financing $" "FA Financing $"
## [43] "country_name" "wb_income_group"
## [45] "wb_region" "debt_gross_percent_of_gdp"
## [47] "nominal_gdp_bn_ppp" "nominal_gdp_per_capita_ppp"
## [49] "population_mn"
Debt4Climate_clean_1 <- Debt4Climate_raw %>%
select(`ISO3`,`Name`,`2020`, `Vulnerability Level`,`Rank Percentile`, `debt_gross_percent_of_gdp`, `Risk of external debt distress`, `Risk of overall debt distress`,`RP Financing $`,`FA Financing $` )
Debt4Climate_clean_1
## # A tibble: 192 × 10
## ISO3 Name `2020` `Vulnerability…` `Rank Percenti…` debt_gross_perc…
## <chr> <chr> <dbl> <chr> <dbl> <dbl>
## 1 CHE Switzerland 0.255 Low 1 40.3
## 2 NOR Norway 0.257 Low 0.99 40.3
## 3 AUT Austria 0.284 Low 0.99 78.5
## 4 DEU Germany 0.293 Low 0.98 71.1
## 5 SWE Sweden 0.296 Low 0.98 33.5
## 6 GBR United Kingd… 0.296 Low 0.97 87.0
## 7 ESP Spain 0.300 Low 0.97 114.
## 8 CAN Canada 0.301 Low 0.96 102.
## 9 LUX Luxembourg 0.301 Low 0.96 25.4
## 10 CZE Czech Republ… 0.303 Low 0.95 41.5
## # … with 182 more rows, and 4 more variables:
## # `Risk of external debt distress` <chr>,
## # `Risk of overall debt distress` <chr>, `RP Financing $` <dbl>,
## # `FA Financing $` <dbl>
#Cleaning up column names
colnames (Debt4Climate_clean_1) [2] <- "Country"
colnames (Debt4Climate_clean_1) [3] <- "ND-Gain_Vulnerability_Score"
colnames (Debt4Climate_clean_1) [4] <- "Climate_Vulnerability_Level"
colnames (Debt4Climate_clean_1) [5] <- "Climate_Vulnerability_Percentile"
colnames (Debt4Climate_clean_1) [6] <- "Gross_Debt_as_Percent_of_GDP"
colnames (Debt4Climate_clean_1) [7] <- "External_debt_distress"
colnames (Debt4Climate_clean_1) [8] <- "Overall_debt_distress"
colnames (Debt4Climate_clean_1) [9] <- "GCF_Readiness_Financing"
colnames (Debt4Climate_clean_1) [10] <- "GCF_Funded_Activities"
Debt4Climate_clean_1
## # A tibble: 192 × 10
## ISO3 Country `ND-Gain_Vulnerabili…` Climate_Vulnera… Climate_Vulnera…
## <chr> <chr> <dbl> <chr> <dbl>
## 1 CHE Switzerland 0.255 Low 1
## 2 NOR Norway 0.257 Low 0.99
## 3 AUT Austria 0.284 Low 0.99
## 4 DEU Germany 0.293 Low 0.98
## 5 SWE Sweden 0.296 Low 0.98
## 6 GBR United Kingdom 0.296 Low 0.97
## 7 ESP Spain 0.300 Low 0.97
## 8 CAN Canada 0.301 Low 0.96
## 9 LUX Luxembourg 0.301 Low 0.96
## 10 CZE Czech Republic 0.303 Low 0.95
## # … with 182 more rows, and 5 more variables:
## # Gross_Debt_as_Percent_of_GDP <dbl>, External_debt_distress <chr>,
## # Overall_debt_distress <chr>, GCF_Readiness_Financing <dbl>,
## # GCF_Funded_Activities <dbl>
#Additional cleaning up
#Adding new column to sum total GCF financing
Debt4Climate_clean_2 <- Debt4Climate_clean_1 %>%
mutate(TotalGCF = rowSums(across(c(GCF_Readiness_Financing,GCF_Funded_Activities))))
colnames (Debt4Climate_clean_2) [11] <- "Total_GCF_Financing"
#Making vulnerability ranking names consistent with debt distress
Debt4Climate_clean_1$Climate_Vulnerability_Level[Debt4Climate_clean_1$Climate_Vulnerability_Level=="Medium"]<-"Moderate"
#Converting climate vulnerability percentiles from decimals to percent
Debt4Climate_clean_1$ Climate_Vulnerability_Percentile <- Debt4Climate_clean_1$Climate_Vulnerability_Percentile*(100)
Debt4Climate_clean_2
## # A tibble: 192 × 11
## ISO3 Country `ND-Gain_Vulnerabili…` Climate_Vulnera… Climate_Vulnera…
## <chr> <chr> <dbl> <chr> <dbl>
## 1 CHE Switzerland 0.255 Low 1
## 2 NOR Norway 0.257 Low 0.99
## 3 AUT Austria 0.284 Low 0.99
## 4 DEU Germany 0.293 Low 0.98
## 5 SWE Sweden 0.296 Low 0.98
## 6 GBR United Kingdom 0.296 Low 0.97
## 7 ESP Spain 0.300 Low 0.97
## 8 CAN Canada 0.301 Low 0.96
## 9 LUX Luxembourg 0.301 Low 0.96
## 10 CZE Czech Republic 0.303 Low 0.95
## # … with 182 more rows, and 6 more variables:
## # Gross_Debt_as_Percent_of_GDP <dbl>, External_debt_distress <chr>,
## # Overall_debt_distress <chr>, GCF_Readiness_Financing <dbl>,
## # GCF_Funded_Activities <dbl>, Total_GCF_Financing <dbl>
#Remove extraneous columns and create final clean dataset
Debt4Climate_clean_final <-subset(Debt4Climate_clean_2, select = -c(GCF_Readiness_Financing,GCF_Funded_Activities))
Debt4Climate_clean_final
## # A tibble: 192 × 9
## ISO3 Country `ND-Gain_Vulnerabili…` Climate_Vulnera… Climate_Vulnera…
## <chr> <chr> <dbl> <chr> <dbl>
## 1 CHE Switzerland 0.255 Low 1
## 2 NOR Norway 0.257 Low 0.99
## 3 AUT Austria 0.284 Low 0.99
## 4 DEU Germany 0.293 Low 0.98
## 5 SWE Sweden 0.296 Low 0.98
## 6 GBR United Kingdom 0.296 Low 0.97
## 7 ESP Spain 0.300 Low 0.97
## 8 CAN Canada 0.301 Low 0.96
## 9 LUX Luxembourg 0.301 Low 0.96
## 10 CZE Czech Republic 0.303 Low 0.95
## # … with 182 more rows, and 4 more variables:
## # Gross_Debt_as_Percent_of_GDP <dbl>, External_debt_distress <chr>,
## # Overall_debt_distress <chr>, Total_GCF_Financing <dbl>
#Save down processed excel file
write_csv(Debt4Climate_clean_final, here("03_data_processed", "Debt4Climate.csv"))