Project Overview

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.

Tidying Plan

  1. Load 4 data sets:
  1. Join datasets based on ISO3 codes

  2. Select specific variables of interest

  3. Clean up variable names and values

  4. Export processed file

1. Loading the data

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

2. Join datasets based on ISO3 codes

#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>, …

3. Narrow variables of interest

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

4. Clean up variable names and values

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

5. Export processed file

#Save down processed excel file
write_csv(Debt4Climate_clean_final, here("03_data_processed", "Debt4Climate.csv"))