Code Monkey home page Code Monkey logo

comtradr's Introduction

comtradr

CRAN_Status_Badge Status at rOpenSci Software Peer Review R-CMD-check Codecov test coverage

Interface with and extract data from the United

Nations Comtrade API https://comtradeplus.un.org/. Comtrade provides country level shipping data for a variety of commodities, these functions allow for easy API query and data returned as a tidy data frame. More info can be found here. Full API documentation can be found here.

Please report issues, comments, or feature requests. We are very much looking for feedback on the usability of the new functions.

Please note that this package is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

For information on citation of this package, use citation("comtradr")

Installation 🛠ī¸

You can install the package with:

install.packages("comtradr")

To install the dev version from github, use:

# install.packages("devtools")
devtools::install_github("ropensci/comtradr@dev")

Usage

Authentication 🔐

Do not be discouraged by the complicated access to the token - you can do it! đŸ’Ē

As stated above, you need an API token, see the FAQ of Comtrade for details on how to obtain it:

➡ī¸ https://uncomtrade.org/docs/api-subscription-keys/

You need to follow the detailed explanations, which include screenshots, in the Wiki of Comtrade to the letter. ☝ī¸ I am not writing them out here, because they might be updated regularly. However, once you are signed up, select the comtrade - v1 product, which is the free API.

Storing the API key

If you are in an interactive session, you can call the following function to save your API token to the environment file for the current session.

library(comtradr)

set_primary_comtrade_key()

If you are not in an interactive session, you can register the token once in your session using the following base-r function.

Sys.setenv('COMTRADE_PRIMARY' = 'xxxxxxxxxxxxxxxxx')

If you would like to set the comtrade key permanently, we recommend editing the project .Renviron file, where you need to add a line with COMTRADE_PRIMARY = xxxx-your-key-xxxx.

ℹī¸ Do not forget the line break after the last entry. This is the easiest by taking advantage of the great usethis package.

usethis::edit_r_environ(scope = 'project')

Example 1 ⛴ī¸

Now we can get to actually request some data. Let us query the total trade between China and Germany and Argentina, as reported by China.

# Country names passed to the API query function must be spelled in ISO3 format. 
# For details see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3 

# You can request a maximum interval of twelve years from the API
example1 <- comtradr::ct_get_data(
  reporter = 'CHN',
  partner = c('ARG', 'DEU'),
  start_date = 2010,
  end_date = 2012
)

# Inspect the return data
str(example1)

Example 2 ⛴ī¸

Return all exports related to Wine from Argentina to all other countries, for years 2007 through 2011.

library(comtradr)

# Fetch all shrimp related commodity codes from the Comtrade commodities DB.
# This vector of codes will get passed to the API query.
wine_codes <- ct_commodity_lookup("wine", return_code = TRUE, return_char = TRUE)

# API query.
example2 <- ct_get_data(
  reporter =  "ARG",
  flow_direction = "export",
  partner = "all_countries",
  start_date = 2007,
  end_date = 2011,
  commodity_code = wine_codes
)

# Inspect the output
str(example2)

Bulk Download Example đŸ“Ļ

To download bulk files, use the function ct_get_bulk. Usage is documented in the package vignettes, see here for an example.

Attention, this downloads large files (often more than one Gigabyte in size) and requires a premium key.

hs0_all <- comtradr::ct_get_bulk(
  reporter = c("DEU"), # only some examples here,
  commodity_classification = 'H0',
  frequency = 'A',
  verbose = T,
  start_date = 2020, # only one year here
  end_date = 2020)

Data availability

See here for an overview of available commodity classifications.

Comtradr has relaunched recently 🚧

The Comtrade API has been undergoing extensive updates. At this point the legacy API has been taken offline (see here).

In order to accommodate the new syntax, as well as adding the new functionality, the comtradr package has been undergoing an extensive re-write. Additionally, it is not possible anymore to query the API without an API token. There still is a free version, but unlike before you need to be a registered user to obtain the token. See the FAQ for details on how to obtain the new access tokens.

ropensci_footer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤ī¸ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.