OECDパッケージ

OECD , ggplot2, RColorBrewer パッケージ

(参考)
OECD.Statの使い方
Reproducible and dynamic access to OECD data (pdf)

日本の2006年から2015年の購買力平価(PPPGDP)の推移を調べる。

1
2
3
4
5
6
7
8
9
library(OECD)
#データセットのリストを入手
dataset_list <-get_datasets()
#PPP(主要通貨購買力平価)を含むデータセットを検索
search_dataset("PPP", data = dataset_list)
#検索した中から適当なデータセットを選択。データの構成を調べる。
dataset<-"SNA_TABLE4"
data <-get_data_structure(dataset)
data$VAR_DESC

1 LOCATION Country
2 TRANSACT Transaction
3 MEASURE Measure
4 TIME Year
5 OBS_VALUE Observation Value
6 TIME_FORMAT Time Format
7 OBS_STATUS Observation Status
8 UNIT Unit
9 POWERCODE Unit multiplier
10 REFERENCEPERIOD Reference period

今回は 1.「国・地域」(LOCATION)、2.「項目」(TRANSACT)、3.「単位」(MEASURE)、「年次」(TIME)で絞り込む

絞り込むためのidを調べる

1
2
3
data$LOCATION
data$TRANSACT
data$MEASURE

LOCATION JPN
TRANSACT PPPGDP
MEASUREは、選択肢が一つなので指定しない

1
2
3
4
5
6
7
8
9
10
11
#データ本体を入手するためのフィルタ作成
#順序を間違えないようにする。JPN -> PPPGDP
filter_list=list(c("JPN"),c("PPPGDP"))
#データの入手
df <-get_dataset(dataset = dataset,filter = filter_list, start_time =2006,end_time =2015)
#確認
head(df)
#グラフ作成
par(family="IPAexMincho")
plot(as.numeric(df$obsTime),df$obsValue,,xlab="",ylab="",las=1,type="o",pch=16)
title("購買力平価(GDP)の推移")

(参考)
社会保障給付費の対GDP比について(OECD)

1
2
3
4
5
6
7
library(OECD)
dataset_list <-get_datasets()
#social expenditure(社会保障給付費)を含むデータセットを検索
search_dataset("social expenditure", data = dataset_list)
dataset<-"SOCX_AGG"
data <-get_data_structure(dataset)
data$VAR_DESC

1 SOURCE Source
2 BRANCH Branch
3 TYPEXP Type of Expenditure
4 TYPROG Type of Programme
5 UNIT Measure (注意)ここの指定でエラー
6 COUNTRY Country
7 YEAR Year
8 OBS_VALUE Observation Value
9 TIME_FORMAT Time Format
10 OBS_STATUS Observation Status
11 UNIT Unit
12 POWERCODE Unit multiplier
13 REFERENCEPERIOD Reference period

このうち
1 SOURCE Source
2 BRANCH Branch
3 TYPEXP Type of Expenditure
4 TYPROG Type of Programme
5 UNIT Measure (注意)ここの指定でエラー
6 COUNTRY Country
7 YEAR Year (注意)2011年までのデータしかない(2016.9.11現在)

で絞り込む

1
2
3
4
5
6
7
data$SOURCE
data$BRANCH
data$TYPEXP
data$TYPROG
data$UNIT
data$COUNTRY
data$YEAR

データ本体入手に用いるフィルター作成ではまった。

(注意)
表示される項目が実データにあるとは限らない。 
(OECDのサイトの不具合かOECDパッケージの不具合かは不明)

2011年のデータを取り出す

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
filter_list <-list(c("10_20"),c("1","2","3","4","5","6","7","8","9"),c("0"),c("0"),c("PCT_GDP"))
df <-get_dataset(dataset = dataset,filter =filter_list, start_time =2011,end_time =2011)
head(df)
df1<-data.frame(COUNTRY=df$COUNTRY,BRANCH=df$BRANCH,Value=df$obsValue)
str(df1)
#グラフ作成。ggplot2パッケージを使った方がよい。
library(ggplot2)
library(RColorBrewer)
cols = brewer.pal(9, "Set3")
p <- ggplot(df1, aes(x=COUNTRY, y=Value))
p + geom_bar(stat="identity", aes(fill=BRANCH)) +
scale_fill_manual(breaks=c("1","2","3","4","5","6","7","8","9"),
labels=c("Old age", "Survivors","Incapacity related", "Health",
"Family", "Active labour market programmes",
"Unemployment", "Housing", "Other social policy areas"),
values=cols,
guide = guide_legend(reverse=T)) +
labs(x="",y="",title="Social Expenditure(OECD:2011)")

OECD平均のデータの積み重ね順がおかしい。(ggplotの不具合????)
国名はアルファベット順ではなくvalueの降順にしたい等々。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
library(ggplot2)
library(RColorBrewer)
cols = brewer.pal(9, "Set3")
#OECD平均のデータの積み重ね順を直すための工夫
df1<-df1[order(df1$BRANCH),]
#国名をvalueの降順にするための工夫
#tapply(df1$Value,df1$COUNTRY, sum)
zyun<-sort(tapply(df1$Value,df1$COUNTRY, sum),decreasing = TRUE )
#attr(zyun, "dimnames")[[1]]
p <- ggplot(df1, aes(x=COUNTRY, y=Value))
p + geom_bar(stat="identity", aes(fill=BRANCH)) +
#国名をvalueの降順にする
scale_x_discrete(limits=attr(zyun, "dimnames")[[1]]) +
scale_fill_manual(breaks=c("1","2","3","4","5","6","7","8","9"),
labels=c("Old age", "Survivors","Incapacity related", "Health",
"Family", "Active labour market programmes",
"Unemployment", "Housing", "Other social policy areas"),
values=cols,
guide = guide_legend(reverse=T)) +
labs(x="",y="",title="Social Expenditure(OECD:2011)") +
#国名の表示を斜めに
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
#下の余白をなくす。
scale_y_continuous(expand =c(0,0),limits=c(0,32) )

1980~2011の日本のデータ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
filter_list <-list(c("10_20"),c("1","2","3","4","5","6","7","8","9"),c("0"),c("0"),c("PCT_GDP"),c("JPN"))
df <-get_dataset(dataset = dataset,filter =filter_list, start_time =1980,end_time =2011)
head(df)
df1<-data.frame(TIME=df$obsTime,BRANCH=df$BRANCH,Value=df$obsValue)
str(df1)
p <- ggplot(df1, aes(x=TIME, y=Value))
p + geom_area(aes(group=BRANCH, fill=BRANCH)) +
scale_fill_manual(breaks=c("1","2","3","4","5","6","7","8","9"),
labels=c("Old age", "Survivors","Incapacity related", "Health",
"Family", "Active labour market programmes",
"Unemployment", "Housing", "Other social policy areas"),
values=cols,
guide = guide_legend(reverse=T)) +
labs(x="",y="",title="Social Expenditure(Japan:1980~2011)") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_y_continuous(expand =c(0,0),limits=c(0,25) )