Economy: 総雇用者所得について考える4_累積データもRなら簡単集計

I.CSV累積データ

 

一般には項目別データを使っているようですが、全データを無理やり一つにまとめている「実数・指数累積データ」があります。

無理やり一つにしているので構造が複雑ですが、年別、月別実数値のデータがあり、名目賃金額の月別年別変遷を一覧を取得することができます。

Excelではかなり面倒な作業ですが、データの構成がわかっていればRなら簡単です。実際には、慣れないデータなので時間がかかりましたが、一度スクリプトを書けば、次からは簡単です。

データは、次のページの下から4つ目の「実数・指数累積データ (アプリケーションによっては、全体を読み込むことが出来ない場合があります。)」のファイルです。

 

毎月勤労統計調査

 

II.Rでグラフ作成

 

1.データの読み込み

 

従来公表されていた修正前のデータによって実質賃金の指数の推移をグラフにします。

データをネット経由で簡単に使えるようにPastbinにアップして公開しようと思いましたが、無料登録では容量オーバーになりました。データは390463行22列あり、オンラインのGoogle Sheetsでも容量オーバーになりました。

ダウンロードして、LibreOfficeのCalcやExcelでデータを整えようとしましたが、遅すぎて無理です。

とうことで、CSVファイルを直接Rで読み込んで整理します。普通は、表計算アプリでやったほうが簡単で便利ですが、データが大きくなるとRの整理スキルが必要です。

今回のデータは比較的綺麗に整理されているのでよいですが、上述のように項目内にスペースが入っていたのですが、それに気づくのに時間がかかりました。

項目に空白があると、filterがうまくつかえませんので、次のようにstrip.white=TRUEを書き込んで空白を削除します。文字に挟まれたスペースは削除されないようです。

 

wage00<-read.csv("/Users/.../Downloads/maikin-kHeader.csv", strip.white=TRUE)

 

2.取得したデータ

 

read.scvの便利なのは空白項目にNAを自動的にいれてくれることです。異なったデータを無理やり一つにしているので、たくさんNAが書き込まれます。

 

データが複雑なのでデータの構成を確認し、選択する項目を決めます。Excelだと複雑ですが、RだとIIIのスクリプトで示したように、構成さえわかればselectで列、filterで行を選び求めるデータを簡単に選び出すことができます。

 

 

3.実質賃金の推移のグラフ

 

 

実質賃金が上がっているように見えますが、もとのデータが2015年を100としているからで、第二次安倍内閣が発足した2012年を100とすれば、下で示したように実質賃金は下がっているグラフになります。

 

総雇用者所得について考える2

 

4.名目賃金の推移のラインを重ねる(2015=100)

 

 

5.2012を100に変更

 

 

2012年以降実質賃金が下がっていることがわかります。

 

6.スクリプト

 

# import libraries
library(magrittr)
library(dplyr)
library(ggplot2)
library(reshape2)
# real wage
# read the data
wage0 <- read.csv("/Users/hirofumishibata/Downloads/maikin-kHeader.csv", strip.white=TRUE)
# select and filter
realWage0IndexD16 <- select(wage0, dtype, date, industry, scale, fullpart, d16) %>%
  filter(dtype == "I C", industry == "TL", scale == 0, fullpart == 0)
# add a column year
year <- data.frame(year = c(1970:2017))
# combine year with the data
realWage0IndexYearD16 <- cbind(year, realWage0IndexD16)
# subset year and d16 columns form 2012 to 2017
realWage0IndexYearD16_2012_2017 <- select(realWage0IndexYearD16, year, d16) %>%
  filter(between(year, 2012, 2017))
realWage0IndexYearD16_2012_2017
# create a line plot with points
ggplot(data=realWage0IndexYearD16_2012_2017, aes(x=year, y=d16, group=1)) +
  geom_line() +
  geom_point()

# real wage and nominal wage 2015=100
# select columns with select
nominalWage0IndexD13 <- select(wage0, dtype, date, industry, scale, fullpart, d13) %>%
  filter(dtype == "I C", industry == "TL", scale == 0, fullpart == 0)
nominalWage0IndexD13
# add a collumn clled year
year <- data.frame(year = c(1970:2017))
# combine year with the data
nominalWage0IndexYearD13 <- cbind(year, nominalWage0IndexD13)
nominalWage0IndexYearD13
# subset d13 form 2012 to 2017
nominalWage0IndexYearD13_2012_2017 <- filter(nominalWage0IndexYearD13, between(year, 2012, 2017))
nominalWage0IndexYearD13_2012_2017D13 <- nominalWage0IndexYearD13_2012_2017 %>%
  select(d13)
nominalWage0IndexYearD13_2012_2017D13
# combine year and d16 with d13
Wage0IndexYearD13_2012_2017D13D16 <- cbind(realWage0IndexYearD16_2012_2017, nominalWage0IndexYearD13_2012_2017D13)
Wage0IndexYearD13_2012_2017D13D16
# create a multiple line graph on the base of 2015=100 
Wage0IndexYearD13_2012_2017D13D16_melt <- melt(Wage0IndexYearD13_2012_2017D13D16, id.var='year')
Wage0IndexYearD13_2012_2017D13D16_melt
ggplot(Wage0IndexYearD13_2012_2017D13D16_melt, aes(x=year, y=value, col=variable)) +
  geom_line()

# real wage and nominal wage 2012=100
# add columns on the basis of 2012=100
Wage0IndexYearD13_2012_2017D13D16$realWage <- 
  Wage0IndexYearD13_2012_2017D13D16$d16 / 104.2 * 100
Wage0IndexYearD13_2012_2017D13D16$nominalWage <- 
  Wage0IndexYearD13_2012_2017D13D16$d13 / 99.4 * 100
Wage0IndexYearD13_2012_2017D13D16
# melt the data with reshape
Wage0IndexYearD13_2012_2017D13D16_melt <- 
  melt(Wage0IndexYearD13_2012_2017D13D16, id.vars=c("year", "d16", "d13"),
       variable.name="wage", value.name="index")
Wage0IndexYearD13_2012_2017D13D16_melt
# create a multiple line plot
ggplot(Wage0IndexYearD13_2012_2017D13D16_melt, 
       aes(x=year, y=index, col=wage)) +
       geom_line() +
       labs(title = "Nominal Wage and Real Wage", y= "index")

 

Please follow and like us:

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.