Skip to contents

The goal of imf.data is to provide an interface to IMF Data via the IMF Data REST API.

Installation

Install the released version of remotes from CRAN:

install.packages("imf.data")

Usage

library(imf.data)

# list all available time-series
list_datasets()
#>             ID                                                        Description
#> 1       AFRREO              Sub-Saharan Africa Regional Economic Outlook (AFRREO)
#> 2 AFRREO201410 Sub-Saharan Africa Regional Economic Outlook (AFRREO) October 2014
#> 3 AFRREO201504   Sub-Saharan Africa Regional Economic Outlook (AFRREO) April 2015
#> 4 AFRREO201510 Sub-Saharan Africa Regional Economic Outlook (AFRREO) October 2015
#> 5 AFRREO201604   Sub-Saharan Africa Regional Economic Outlook (AFRREO) April 2016
#> 6 AFRREO201610 Sub-Saharan Africa Regional Economic Outlook (AFRREO) October 2016
#> 7 AFRREO201704   Sub-Saharan Africa Regional Economic Outlook (AFRREO) April 2017
#>  [ reached 'max' / getOption("max.print") -- omitted 316 rows ]
# load IFS time-series
IFS <- load_datasets("IFS")

# see possible values for dimension 'ref_area'
IFS$dimensions$ref_area
#>   Value         Description
#> 1    AF         Afghanistan
#> 2    AL             Albania
#> 3    DZ             Algeria
#> 4    AD             Andorra
#> 5    AO              Angola
#> 6    AI            Anguilla
#> 7    AG Antigua and Barbuda
#>  [ reached 'max' / getOption("max.print") -- omitted 264 rows ]

# get time-series for GDP of Portugal, with Annual frequency
IFS$get_series(freq = "A", ref_area = "PT", indicator = "NGDP_D_IX")
#>   TIME_PERIOD   A.PT.NGDP_D_IX
#> 1        1995  65.121159550493
#> 2        1996 66.6781968283958
#> 3        1997 69.2687835398304
#> 4        1998 71.9183372769496
#> 5        1999 74.3423648876999
#> 6        2000 76.8850736800294
#> 7        2001 79.7421096759417
#>  [ reached 'max' / getOption("max.print") -- omitted 22 rows ]
# load DOT time-series
DOT <- load_datasets("DOT")

DOT$get_series(freq = "M",
               ref_area = "PT",
               indicator = "TMG_CIF_USD",
               counterpart_area = c("B0","W00"),
               start_period = "2022-01-01",
               end_period = "2022-12-31")
#>   TIME_PERIOD M.PT.TMG_CIF_USD.B0 M.PT.TMG_CIF_USD.W00
#> 1     2022-01         5901.778786          8595.602054
#> 2     2022-02         6627.285827          9310.123613
#> 3     2022-03         7284.719861          10072.49156
#> 4     2022-04         6643.374962          9309.040471
#> 5     2022-05         7099.878914         10332.531519
#>  [ reached 'max' / getOption("max.print") -- omitted 7 rows ]
HPDD <- load_datasets("HPDD")

HPDD$dimensions$indicator
#>        Value       Description
#> 1 GGXWDG_GDP Debt to GDP Ratio

d <- HPDD$get_series(freq = "A",
                     ref_area = c("PT","ES"),
                     indicator = "GGXWDG_GDP", 
                     start_period = "1974")
# see original data
ls_series <- attr(d, "original_data")
# melt the results 
library(data.table)

cols <- lapply(HPDD$dimensions, function(x)NULL)

melt(as.data.table(d), measure.vars = measurev(cols, sep="."))
#>     TIME_PERIOD   freq ref_area  indicator            value
#>          <char> <char>   <char>     <char>           <char>
#>  1:        1974      A       PT GGXWDG_GDP 13.5038251401281
#>  2:        1975      A       PT GGXWDG_GDP 19.1667501320296
#>  [ reached getOption("max.print") -- omitted 83 rows ]