Article Outline
Rで国際通貨基金(IMF)のデータを取得する(その1)
RでGDPの推移を見る(世界銀行のデータ)で WDIパッケージを使って、世界銀行のデータを取得し、グラフを作成した。
今回は、imfrパッケージを使ってIMFのデータを取得し、グラフを作成する。
Package‘imfr’was removed from the CRAN repository.
Archived on 2022-07-09 for policy violation.
ということなので、imfr package: https://github.com/christophergandrud/imfrからインストールする。
remotes::install_github("christophergandrud/imfr")
アメリカ,中国および日本の実効為替レートデータ
円弱い
Rコード
#remotes::install_github("christophergandrud/imfr")
require(imfr)
require(tidyverse)
require(scales)
require(knitr)
#
databases <- imf_databases()
IFS_param<-imf_parameters(database_id = "IFS")
#実効為替レートデータは EREER_IX
#アメリカ、中国、日本のISO2
ISO2<- c( "JP" ,"CN", "US")
# データ取得
rate <- imf_dataset(database_id = "IFS",indicator = "EREER_IX",freq='A',ref_area = ISO2,return_raw = TRUE)
database_id = “”: ダウンロードするデータベースのID
indicator = “”: ダウンロードするIMFの指標ID
ref_area = “”: ISOの2桁コードを使って国を指定
start =, end = : データの開始年と終わりの年
freq: 年次データ(A),四半期データ(Q)および月次データ(M)
return_raw = TRUE: これを付けないとなぜかエラーになった。
# データ編集
rate_Data<-rate %>%
unnest(Obs) %>%
select(country=`@REF_AREA`,year=`@TIME_PERIOD`,value=`@OBS_VALUE`)
# グラフと凡例の対応付けをようにするため最終年の降順にするため工夫
dat<- as.data.frame(rate_Data)
# 数値に直す
dat$value<- as.numeric(dat$value)
dat$year<- as.integer(dat$year)
# 最終年のデータだけ取り出す
lg<-dat[dat$year==2022 ,c("country","value")]
# value降順でファクター化
dat$country<- factor(dat$country,levels=lg[order(-lg$value),"country"])
#
ggplot(dat, aes(x= year, y = value,color=country))+
geom_line()+
ylab("ENEER_IX")+
theme_bw()
(参考)貿易用語「EXW」「FOB」「CIF」とは?〜その②
日本、中国、韓国 3国間の輸出データ:FOB(Free on Board=本船渡し)
アメリカ、日本、中国 3国間の輸出データ:FOB(Free on Board=本船渡し)
アメリカは中国から多く輸入している。
日本はアメリカより中国のほうが輸入、輸出とも多い。但し、中国への輸出額は2022年は大きく減った。
Rコード
#remotes::install_github("christophergandrud/imfr")
require(imfr)
require(tidyverse)
require(scales)
#Fetch the list of databases available through the IMF API
databases <- imf_databases()
DOT_param<-imf_parameters(database_id = "DOT")
knitr::kable(DOT_param$indicator)
input_code | description |
---|---|
TXG_FOB_USD | Goods, Value of Exports, Free on board (FOB), US Dollars |
TMG_CIF_USD | Goods, Value of Imports, Cost, Insurance, Freight (CIF), US Dollars |
TMG_FOB_USD | Goods, Value of Imports, Free on board (FOB), US Dollars |
TBG_USD | Goods, Value of Trade Balance, US Dollars |
TXG_FOB_USDのデータを取得し、グラフを作成する。
日本、中国、韓国 3国間の輸出データ:FOB(Free on Board=本船渡し)
ISO2<- c( "JP" ,"CN", "KR")
# TXG_FOB_USDデータ取得
DOT <- imf_dataset(database_id = "DOT" , indicator = c("TXG_FOB_USD") ,freq='A',ref_area = ISO2 , start = 2010, end=2022,return_raw = TRUE)
# 単位を調べる
table(DOT$`@UNIT_MULT`)
# 6 <- 10^UNIT_MULT = 1,000,000: 単位: 100万ドル
# 722
DOT_Data<-DOT %>%
filter(`@COUNTERPART_AREA` %in% ISO2) %>% unnest(Obs) %>%
select(From=`@REF_AREA`, To=`@COUNTERPART_AREA`,Year=`@TIME_PERIOD`,Value=`@OBS_VALUE`)
#
dat<- as.data.frame(DOT_Data)
#colnames(dat)<- c("From","To","Year","Value")
# 10億ドル単位にする
dat$Value<- as.numeric(dat$Value)/1000
dat$Year<- as.integer(dat$Year)
dat$From_To<- paste0(dat$From,"_",dat$To)
#
lg<-dat[dat$Year==2022 ,c("From_To","Value")]
dat$From_To<- factor(dat$From_To,levels=lg[order(-lg$Value),"From_To"])
#
ggplot(dat,aes(x=Year,y=Value,color=From_To)) +
geom_line() +
geom_point() +
ylab("輸出_輸入(FOB): 単位 10億ドル") +
scale_x_continuous(breaks=seq(2000,2022,2),expand = rep(1e-2,2) )+
scale_y_continuous(labels = comma)+
theme_classic()
アメリカ、日本、中国 3国間の輸出データ:FOB(Free on Board=本船渡し)
ISO2<- c( "JP" ,"CN", "US")
DOT <- imf_dataset(database_id = "DOT" , indicator = c("TXG_FOB_USD") ,freq='A',ref_area = ISO2 , start = 2010, end=2022,return_raw = TRUE)
DOT_Data<-DOT %>%
filter(`@FREQ` == "A" & `@COUNTERPART_AREA` %in% ISO2) %>% unnest(Obs) %>%
select(From=`@REF_AREA`, To=`@COUNTERPART_AREA`,Year=`@TIME_PERIOD`,Value=`@OBS_VALUE`)
dat<- as.data.frame(DOT_Data)
# 10億ドル単位にする
dat$Value<- as.numeric(dat$Value)/1000
dat$Year<- as.integer(dat$Year)
dat$From_To<- paste0(dat$From,"_",dat$To)
lg<-dat[dat$Year==2022 ,c("From_To","Value")]
dat$From_To<- factor(dat$From_To,levels=lg[order(-lg$Value),"From_To"])
ggplot(dat,aes(x=Year,y=Value,color=From_To)) +
geom_line() +
geom_point() +
ylab("輸出_輸入(FOB): 単位 10億ドル")+
scale_x_continuous(breaks=seq(2000,2022,2),expand = rep(1e-2,2) )+
scale_y_continuous(labels = comma)+
theme_bw()