Skip to contents

⚠️ This package is no longer maintained as the underlying API has been decommissioned; please use for example imfapi for this functionality for the new IMF API.

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 ]