UN Comtrade は貿易に関する実証研究で広く用いられるデータセットの1つであり,基本的に無料で利用できる. このデータでは,ウェブ上のインターフェースやAPI (Application Program Interface) 国家・年・貿易品目・輸出/輸入等を詳細に指定してデータを取得できる.
実際の分析では,HSコードやSITCコードのような異なる貿易品目コード (commodity code)・バージョン間で類似する貿易品目を抽出することがしばしば必要になる. 以下では,こうした作業で必要になる貿易品目コードの取得・操作方法をRを用いて例示する.ただし,Comtrade のウェブサイトにも注意がある通り,異なる貿易品目コードやバージョンの間で「類似」する品目を抽出することはできても,完全に「一致」する品目を取得することが常に可能とは限らない.
まず,ワーキング・ディレクトリを指定し,必要なパッケージを読み込む (インストールしていない場合は,先にインストールする).
## Set working directory
# setwd() ## needs to be updated in your own environment
## Packages
library(readxl)
library(comtradr)
library(stringr)
library(tidyverse)
次いで,UN Comtrade のウェブサイトから貿易品目対応表を取得する.zip圧縮されたエクセルファイルとして提供されているので,一旦ローカルにダウンロードする.
## Download zipped data
temp <- "un_table.zip"
zip_url = "https://unstats.un.org/unsd/trade/conversions/Complete%20correlations%20of%20HS%20SITC%20BEC.zip"
download.file(zip_url, temp)
unzip(temp)
このzipファイルを解凍の上,Rに読み込んで概観する.
## Read correspondence table
tbl_corr = read_excel("Complete correlations of HS SITC BEC - compiled at 03 Dec 2015.xlsx")
names(tbl_corr) = str_to_lower(names(tbl_corr))
glimpse(tbl_corr) ## Skim the entries
## Observations: 44,738
## Variables: 10
## $ hs92 <chr> "010111", "010111", "010111", "010111", "010120", "01012...
## $ hs96 <chr> "010111", "010111", "010111", "010111", "010120", "01012...
## $ hs02 <chr> "010110", "010110", "010110", "010110", "010110", "01011...
## $ hs07 <chr> "010110", "010110", "010110", "010110", "010110", "01011...
## $ hs12 <chr> "010121", "010121", "010130", "010130", "010121", "01012...
## $ bec4 <chr> "41", "41", "41", "41", "41", "41", "41", "41", "111", "...
## $ sitc1 <chr> "0015", "0015", "0015", "0015", "0015", "0015", "0015", ...
## $ sitc2 <chr> "0015", "0015", "0015", "0015", "0015", "0015", "0015", ...
## $ sitc3 <chr> "00151", "00152", "00151", "00152", "00151", "00152", "0...
## $ sitc4 <chr> "0015", "0015", "0015", "0015", "0015", "0015", "0015", ...
## Delete zip
# unlink(temp)
これで,品目コード対応表を取得し,Rに読み込むことができた. SITC rev.1 の241を例に,対応する他の貿易品目コードを取得しよう.
## Take SITC rev.1 241 as an example
commoditydf = ct_commodities_table("SITCrev1") %>% tbl_df ## extract SITC rev.1
sitc2look_up = "241" ## change this line to loop up other commodity codes
sitc_tbl = commodity_lookup(sitc2look_up, commoditydf) %>% ## What's in code 241?
tbl_df %>%
rename(col = `241.commodity`) %>%
separate(col = col, into = c("code", "description"), sep = " - ")
sitc_tbl
## # A tibble: 9 x 2
## code description
## * <chr> <chr>
## 1 241 Fuel wood & charcoal
## 2 2411 Fuel wood & wood waste
## 3 2412 Wood charcoal
## 4 51241 Oxygen function aldehydes
## 5 66241 Building bricks
## 6 7241 Television broadcast receivers
## 7 81241 Illuminating and signalling glassware
## 8 86241 Photographic plates/films in the flat unexposed
## 9 89241 Transfers (decalcomanias)
## Which numbers correspond to SITC rev.1 241?
out_tbl = tbl_corr %>%
mutate(sitc1_d3 = str_sub(sitc1, 1, 3)) %>% ## add 3-digit SITC code
filter(sitc1_d3 == sitc2look_up) %>% ## filter by sitc2look_up
left_join(sitc_tbl, by = c("sitc1" = "code")) %>% ## join w/ sitc_tbl above
select(description, contains("sitc"), contains("hs"))
out_tbl %>% as.data.frame
## description sitc1 sitc2 sitc3 sitc4 sitc1_d3 hs92 hs96
## 1 Fuel wood & wood waste 2411 24501 24501 24501 241 440110 440110
## 2 Fuel wood & wood waste 2411 24603 2462 2462 241 440130 440130
## 3 Fuel wood & wood waste 2411 24603 2462 2462 241 440130 440130
## 4 Wood charcoal 2412 24502 24502 24502 241 440200 440200
## 5 Wood charcoal 2412 24502 24502 24502 241 440200 440200
## hs02 hs07 hs12
## 1 440110 440110 440110
## 2 440130 440130 440131
## 3 440130 440130 440139
## 4 440200 440210 440210
## 5 440200 440290 440290
以上のコードで,SITC (rev.1) のコード241に対応する品目の内容 (description) と下位分類 (桁数の多い分類コード) と,異なるバージョンのSITCとHSコードにおいて対応する品目コードを取得することができた.