2016年1月1日金曜日

【R言語】factor型で数値を集計するときの注意点

R言語の本を読んで意外と苦労するのが
Rの関数に付属するデータセット以外のデータで思ったように集計できない」ってこと。

僕ら初心者で良くあるのは、こういったところでしょうか。
・文字コードが実施環境と違う
・NAの取り扱いがよくわからない
・依存関係がクリア出来なくてパッケージがインストールできない 等々。

その中でも、「勉強しては忘れ、勉強しては忘れ・・・」しちゃうのがR言語特有の「データフレーム」の取り扱い。特に「factor型」データってややこしいですよね。


リーサスのInboundデータでやってみた。




「地方創生」の重要システムである「地域経済分析システム(RESAS:リーサス)」から「観光マップ」→「外国人訪問分析」を選択してください。上記画像のような各都道府県を訪れたInboundの人数等が国別にわかるのですが、CSVデータをダウンロードすることが出来ます。

R言語の練習にはもってこいなので、こちらを利用してみましょう。

 以下ソースコードです。

# CSVファイルを読み込みます。タイトル行があるので、head=TRUEを忘れずに。
inbound.dat <- read.csv("外国人訪問分析_四半期.csv",head=TRUE)
 
# いちいちデータフレームの名前をタイプするのは面倒なので、attach関数を適用します。
# こうすると列名だけの入力でOKになります。
attach(inbound.dat)

 
# 「訪日外客数_人」列にInbound人数がありますがfactor型になっているため、
# sum等の集計が出来ません。いったん、「as.character」関数に通してから、「as.numeric」関数で
#  数値データに変換してください。これ、意外に本に書いてないんですよね。。
count.dat <- aggregate(x=list(value=as.numeric(as.character(訪日外客数_人))),by=list(keycol=国名),FUN=sum,na.rm=TRUE)
 
# ggplot2で作図。2011~15年までのデータを合計しましたが、「keycol=」に「集計年」を追加
# すると年別でも集計出来ます。 
 
library(ggplot2) 
p <- ggplot(count.dat, aes(x=keycol, y=value))
p + geom_bar(stat="identity")
 
 

0 件のコメント:

コメントを投稿