Rでデータフレームを縦長・横長・入れ子に変形・整形するためのライブラリ「tidyr」を使って、簡単な分析をしてみます
今回実行した環境
- MacBook Pro (Retina, 13-inch, Early 2015)
- プロセッサ: 3.1 GHz Intel Core i7
- メモリ: 16 GB 1867 MHz DDR3
- OSバージョン: 10.12.3
- R : 3.3.1
準備
tidyrを入れる
はじめてtidyrを使用する場合は、パッケージをインストールしておきましょう
install.packages("tidyr")
library(tidyr)
使用するデータを取得する
今回は、漢検の受験者数のデータを使用します。
http://www.kanken.or.jp/kanken/investigation/transition.html
毎年の受験者数がシンプルなテーブルで記述されていますので、
ここは、readHTMLTableを使えば一発で抽出可能です
library(XML)
kanken = "http://www.kanken.or.jp/kanken/investigation/transition.html"
kanken.table = readHTMLTable(airline, header=T, which=1,stringsAsFactors=F)
# 列名を入れる
colnames(kanken.table) = c("年度","志願者数","合格者数")
テーブルの中身は以下のようになっています
年度 志願者数 合格者数
1 平成12年度(2000年度) 1,576,959人 686,388人
2 平成13年度(2001年度) 1,797,608人 859,902人
3 平成14年度(2002年度) 2,044,170人 1,067,356人
4 平成15年度(2003年度) 2,195,595人 1,203,597人
5 平成16年度(2004年度) 2,240,344人 1,133,875人
6 平成17年度(2005年度) 2,407,075人 1,227,430人
・・・
tidyrでデータを縦長に変換する
続いてtidyrのgather関数をつかってデータを縦長に変換します
この処理をおこなうことでggplot2でグラフ化がしやすくなります
kanken.g <- kanken.table %>% tidyr::gather(分類,人数,-年度)
データは以下のように変換されます
年度 分類 人数
1 平成12年度(2000年度) 志願者数 1,576,959人
2 平成13年度(2001年度) 志願者数 1,797,608人
3 平成14年度(2002年度) 志願者数 2,044,170人
・・・
・・・
・・・
17 平成12年度(2000年度) 合格者数 686,388人
18 平成13年度(2001年度) 合格者数 859,902人
19 平成14年度(2002年度) 合格者数 1,067,356人
・・・
このままだと、人数が数値として読み込めないので、
以下のように「,」と「人」を取り除きます
# 「,」の排除
kanken.g[,3] <- gsub(",","",kanken.g[,3])
# 「人」の排除とas.numericを用いて数値化
kanken.g[,3] <- as.numeric(gsub("人","",kanken.g[,3]))
ここまででデータ整形は完了です。
グラフの描画
続いてグラフの描画をしていきます
今回は、毎年の「志願者数」と「合格者数」をそれぞれ棒グラフにしてならべます
g <- ggplot(kanken.g, aes(x = 年度, y = 人数, fill = 分類))
# グラフのタイプを指定して棒グラフにする
g <- g + geom_bar(width = 0.8, stat = "identity", position = "dodge")
g <- g + scale_linetype_identity()
g <- g + theme_pander()
g <- g + theme(text = element_text(family = "HiraKakuProN-W3"),
plot.margin= unit(c(1, 1, 1, 1), "lines"),
axis.text.x = element_text(angle = 45, hjust = 1))
# Y軸を3桁毎のカンマ区切りで表示する
g <- g + scale_y_continuous(labels = scales::comma)
g
すると以下のようなグラフが書けます
2008年度をピークに、一気に志願者数が減少
その後、2010年に巻き返すものの近年は、微減トレンドにあるようです
合格率自体には大きな変化が無く、志願者数につられ合格者数も変動しています
2009年度に何かあったのか、調べたら「漢検協会事件」というのが起きていました
自分もなんとなく覚えているのでちょっと懐かしくなりました