1 はじめに

この文章では、財務省貿易統計を用いてデータを分析する際に行われる典型的なデータ処理を紹介する。

このページで用いるデータもしくは生成される主なデータは以下の3つである。

財務省貿易統計https://www.customs.go.jp/toukei/info/は、毎月の日本と各国との間の2国間の輸出入を記録している。細かい財分類レベルで貿易額が収録されている。

2 輸出統計品目表

輸出統計品目表(https://www.customs.go.jp/yusyutu/index.htm)から、乗用自動車のコードを探す。表から、「第17部 車両、航空機、船舶及び輸送機器関連品」の「第87類 鉄道用及び軌道用以外の車両並びにその部分品及び附属品」の中でも「87.03」が、一般的な乗用自動車を含んでいることがわかる。

3 品別国別表

普通貿易統計の中でも品別国別表のデータを見てみる。

2023年12月の輸出データを見てみる。データはリンク先のe-Statからダウンロードできる。12月のファイルにはその年の1〜12月の12ヶ月分のデータが収録されている。

「第17部」の「第87類」「87.03」が一般的な乗用自動車であるので、「第17部」の「第87類」のcsvファイルをダウンロードする。

4 輸出データの読み込み

ダウンロードして入手した「ik-100h2023e017.csv」をPosit Cloudにアップロードする。

以下のコードでデータの読み込みを行う。

# 全てのデータを削除する。
rm(list=ls())

library(readr)
export <- read_csv("ik-100h2023e017.csv")

5 統計国名符号表

データの変数Countryの3桁の数字は、国番号である。例えば、103は大韓民国を意味する。「統計国名符号表」(https://www.customs.go.jp/toukei/sankou/dgorder/a1.htm)で確認することができる。

国際的なデータでは、韓国は、KORというISO3桁コードで表示されることが多い。そこで、「統計国名符号表」にISOコードを追加することにする。

まず、「統計国名符号表」を読み込む。

library(readxl)
統計国名符号表 <- read_excel("統計国名符号表.xlsx")

countrycodeパッケージをインストールする。

install.packages("countrycode")

countryname()関数を用いて、国名からISOコードを生成する。使い方は、countryname(国名, 'iso3c')のようにする。日本語の国名にも対応しているが、英語の国名を変換には用いている。詳細は、こちらを参照。

# `countrycode`パッケージを使う
library(countrycode)

# 国名からISO3桁コードを取得する
統計国名符号表$iso <- countryname(統計国名符号表$countryname, 'iso3c')
# 統計国名符号表のデータをexcel形式で保存する。
library(openxlsx)
write.xlsx(統計国名符号表, "統計国名符号表_ISO.xlsx")

6 輸出データへの統計国名符号表の接続

輸出データに統計国名符号表を接続する。

export <- merge(export, 統計国名符号表, by.x="Country", by.y="mofcode", all.x=TRUE)

7 輸出データの整形

データ整形のためにtidyverseパッケージをインストールしておく。

install.packages("tidyverse")

輸出データを整形していく。使わない変数を削除する。

# Quantityで始める変数をすべて(数量データ)を削除する。
export <- export[, !grepl("^Quantity", names(export))]

# 輸出か輸入かを示す変数Exp or Impを削除する。
export$`Exp or Imp` <- NULL

# 単位を表すUnit1 と Unit2を削除する。
export$Unit1 <- NULL
export$Unit2 <- NULL

# 年次の集計額 Value-Yearを削除する。
export$`Value-Year` <- NULL

データ形式をwide形式からlong形式に変換する

# tidyverseパッケージを読み込む
library(tidyverse)

# 月次の集計額 Value-をwide形式からlong形式に変換する。
export_long <- pivot_longer(export, cols = starts_with("Value-"), names_to = "Month", values_to = "Value")

月次変数を整理する。

# Monthの値から"Value-"を削除する。
export_long$Month <- gsub("Value-", "", export_long$Month)

# Monthの値(Jan, Feb,...)を数値(1, 2, ...)に変換する。
export_long$m[export_long$Month=="Jan"] <- 1
export_long$m[export_long$Month=="Feb"] <- 2
export_long$m[export_long$Month=="Mar"] <- 3
export_long$m[export_long$Month=="Apr"] <- 4
export_long$m[export_long$Month=="May"] <- 5
export_long$m[export_long$Month=="Jun"] <- 6
export_long$m[export_long$Month=="Jul"] <- 7
export_long$m[export_long$Month=="Aug"] <- 8
export_long$m[export_long$Month=="Sep"] <- 9
export_long$m[export_long$Month=="Oct"] <- 10
export_long$m[export_long$Month=="Nov"] <- 11
export_long$m[export_long$Month=="Dec"] <- 1

# 月次変数mを数値に変換する。
export_long$m <- as.numeric(export_long$m)

8 輸出データの集計

財務省貿易統計の財分類はHSコード8桁レベルで非常に細かいため、データを集計する。ここでは、乗用自動車「87.03」の輸出データを抽出・集計していく。

# HSコードからシングルクォーテーション(')を取り除く
export_long$HS <- gsub("'", "", export_long$HS)

# HSコードを数値に変換する。
export_long$HS <- as.numeric(export_long$HS)

# HSコードの最初の4桁をHS4に格納する。
export_long$HS4 <- substr(export_long$HS, 1, 4)

# Country, Month, HS4でデータをパイプ演算子を使わないで集計する。
export_long_hs4 <- aggregate(Value ~ Country + m + HS4, data=export_long, sum)

# ISOコード、国名を追加する。
export_long_hs4 <- merge(export_long_hs4, 統計国名符号表, by.x="Country", by.y="mofcode", all.x=TRUE)

# HS4が8703である乗用自動車の輸出データをsubset()を用いて抽出する
export_car <- subset(export_long_hs4, HS4==8703)

9 輸出データの可視化

ggplot2を用いてグラフを作成する。ggplot()のコードは長くなりがちであるので、適宜改行すると見やすい。ただし、改行する際には、+がある場合には改行前の行末に+をおく。

# 1000円単位から1億円(1,0000,0000)単位に変換する。
export_car$Value <- export_car$Value / 100000


# USAへの輸出データを抽出する。
USA <- subset(export_car, iso=="USA")

library(ggplot2)
# USAデータを使ってUSAへの乗用車輸出額の月次推移を可視化する。背景は白にする。
ggplot(USA, aes(x=m, y=Value)) + 
  geom_line() + 
  labs(title="米国への乗用車輸出額(億円)の月次推移", 
       x="Month", y="Value") +
  theme_minimal()

# USAとCHNへの輸出データを抽出する。
USA_CHN <- subset(export_car, iso=="USA" | iso=="CHN")

# USA_CHNデータを使ってUSAとCHNへの輸出の月次推移を可視化する。背景は白にする。
ggplot(USA_CHN, aes(x=m, y=Value, color=国名)) + 
  geom_line() + 
  labs(title="米国と中国への乗用車輸出額(億円)の月次推移", 
       x="Month", y="Value") + 
  theme_minimal()