The BOJ
package provides an R
interface to Bank of Japan statistics, specifically the flat files available on the BOJ Time-Series Data portal.
To import data, first load the package:
library("BOJ")
Next, run the get_boj_datasets()
function to obtain a list of available data sets:
<- get_boj_datasets()
datasets
datasets## # A tibble: 17 × 3
## desc name url
## <chr> <chr> <chr>
## 1 "Corporate Goods Price Index (CGPI)" cgpi_m_… https://www.stat-search.boj…
## 2 "Producer Price Index using chain-weig… cgpiren… https://www.stat-search.boj…
## 3 "Services Producer Price Index (SPPI)" sppi_m_… https://www.stat-search.boj…
## 4 "Wholesale Services Price Index" sppi_q_… https://www.stat-search.boj…
## 5 "Input-Output Price Index of the Manuf… iopi_m_… https://www.stat-search.boj…
## 6 "Flow of Funds" fof https://www.stat-search.boj…
## 7 "Flow of Funds (with name of time-seri… fof2_en https://www.stat-search.boj…
## 8 "TANKAN" co https://www.stat-search.boj…
## 9 "TANKAN (Fixed Investment and Software… colease https://www.stat-search.boj…
## 10 "Balance of Payments " bp_m_en https://www.stat-search.boj…
## 11 "Regional Balance of Payments (quarter… regbp_q… https://www.stat-search.boj…
## 12 "International Investment Position (Qu… qiip_q_… https://www.stat-search.boj…
## 13 "International Investment Position (Ca… iip_cy_… https://www.stat-search.boj…
## 14 "BIS International Locational Banking … bis1-1_… https://www.stat-search.boj…
## 15 "BIS International Locational Banking … bis1-2_… https://www.stat-search.boj…
## 16 "BIS International Consolidated Bankin… bis2-1_… https://www.stat-search.boj…
## 17 "BIS International Consolidated Bankin… bis2-2_… https://www.stat-search.boj…
The function returns a tibble data frame listing the available data sets. The column url
can be used as input for the function get_boj()
which downloads, parses and imports the corresponding data.
To import monthly-frequency data on Japan’s Services Producer Price Index, run:
<- get_boj(datasets$url[(datasets$name == "sppi_m_en")])
sppi
sppi## # A tibble: 42,247 × 5
## code desc struc date obs_value
## <chr> <chr> <chr> <chr> <dbl>
## 1 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 99.6
## 2 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 99.7
## 3 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100.
## 4 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100
## 5 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100.
## 6 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100
## 7 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100.
## 8 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 100.
## 9 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 99.9
## 10 PRCS15_5200000000 Services Producer Pr… [Services Producer P… 2015… 99.9
## # … with 42,237 more rows
To plot the data using ggplot2, run the following:
library("dplyr")
library("ggplot2")
library("zoo")
<- subset(sppi, code %in% c("PRCS15_5200000000", "PRCS15_5200010001",
sppi_plot "PRCS15_5200010002", "PRCS15_5200010003",
"PRCS15_5200010004", "PRCS15_5200010005",
"PRCS15_5200010006", "PRCS15_5200010007"))
<- mutate(sppi_plot, date = as.Date(as.yearmon(date, format = "%Y%m")))
sppi_plot <- mutate(sppi_plot, struc = gsub("^Major group/ ", "", struc))
sppi_plot <- subset(sppi_plot, !is.na(obs_value))
sppi_plot
ggplot(sppi_plot, aes(x = date, y = obs_value)) +
geom_line(aes(colour = struc)) +
labs(x = "Date", y = "Services Producer Price Index (2015 base)") +
theme(legend.title = element_blank())
Note that BOJ data sets come with a number of different time formats. The zoo package (e.g. as.yearmon()
) should be able to parse most formats.
This package is in no way officially related to or endorsed by the Bank of Japan. It was inspired by the BIS R package. Please don’t abuse the BOJ’s servers with unnecessary calls.