政府統計の総合窓口(e-Stat)のデータを利用する。
政府統計の総合窓口(e-Stat)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。
政府統計名が不明の場合でも、「分野」や「組織」等から絞り込むことで統計データを探すことができます。
e-Stat から山形県の市町村における指標データを取得する。
まずは地域を選択する。
次にどのような指標データをダウンロードするか項目を選択する。
ここでは以下の項目を選択することにする。
[確定] をクリックすると表にデータが表示される。
最後に選択した項目のデータを CSV ファイルとしてダウンロードする。
大学の情報環境では、おそらく ~/Download
か ~/Desktop
に保存される。
Moodle Server(非公式)で第2回の小テストを受験しなさい。
ダウンロードしたファイルは手元の端末(クライアント)にあるので、それを RStudio サーバにアップロードしなければ RStudio で読み込めない。
サーバにアップロードする手順は以下の通りである。
RStudio で読み込める CSV ファイルの文字コードはデフォルトでは UTF-8 である。 一方、e-Stat からダウンロードした CSV ファイルは文字コードが Shift-JIS なので、読み込むには少し設定が必要である。
これで df という名前のデータフレームにデータが読み込まれる。 もし異なるデータフレーム名にしたければ、Name で入力する文字を変更すればよい。
read_csv()
を使う。
パッケージ readr が必要である。
> library(readr) > df <- read_csv("ファイル名", locale = locale(encoding = "SHIFT-JIS"))
これで df という名前のデータフレームに読み込まれる。
手動、もしくは read_csv()
で読み込まれたデータは、データフレームの一種である tibble 型として読み込まれる。
データフレームのデータ構造を表示する。
> str(df)
RStudio では右上のペインの [Environment] タブで、データフレーム名の頭についている ○ のアイコンをクリックしてもよい。
各列はラベルを使って参照できる。
> df$ラベル
ラベルに空白などの特殊な文字が入っている場合は「`
」で囲む必要があるかもしれない。
> df$`ラベル`
ラベルは長いと入力するのが面倒だが、RStudio では「$
」まで入力するとラベルの候補を自動的に表示してくれるので、そこから選択すればよい。
列番号で参照することもできる。
> df[, 列番号] # tibble型になる > df[[列番号]] # ベクトルになる
「調査年」の列には “年度” がついているのでこれを削除する。
> df$調査年 <- sapply(df$調査年, gsub, pattern = "年度", replacement = "")
sapply()
はリストの全要素に関数を適用するための関数である。
ここでは、「調査年」の列の全要素に gsub()
という関数を引数 pattern=“年度”
, replacement = “”
で適用している。
gsub()
は pattern でマッチした文字列を replacement で置き換える関数である。
pattern には正規表現が使用できる。
また、「調査年」の列は “年度” を削除しても character 型(文字列)のままなので、as.numeric()
で numeric 型(実数)に変換する。
df$調査年 <- as.numeric(df$調査年)
「地域」が “山形県 酒田市”
の行のみを抽出して変数 sakatashi に代入するには以下のようにする。
最後の「,
」を忘れないようにする。
> sakatashi <- df[df$地域 == "山形県 酒田市",]
sakatashi では「地域」の列は不要なので削除する。
> sakatashi$地域 <- NULL
データフレームからグラフを描くには plot()
が手っ取り早い。
> plot(データフレーム)
データフレームが全て数値ならば、各列を $x$ と $y$ で組み合わせた散布図を描いてくれる。
個別のデータでグラフを描くには以下のようにする。
> plot(x, y)
x に $x$ 軸のデータ、y に $y$ 軸のデータを与える。
主なオプションとして以下のものがある。
オプション | 機能 |
---|---|
xlab | $x$ 軸のラベル |
ylab | $y$ 軸のラベル |
xlim | $x$ 軸の範囲 c(下限, 上限) |
ylim | $y$ 軸の範囲 c(下限, 上限) |
type | プロットの種類“p” は点、“l” は折れ線、“b” は点と折れ線 |
title | タイトル |
例えば、酒田市の「課税対象所得(納税義務者1人当たり)【千円】」の推移をグラフで表示するには以下のようにする。
> plot(sakatashi$調査年, sakatashi$`#D02206_課税対象所得(納税義務者1人当たり)【千円】`, type = "b")
ちゃんとしたラベルをつけるには xlab, ylab で指定する。
次のコマンドは長いので2行に分けているが、2行目の「+
」は改行時に自動的につく記号なので実際は入力しない。
> plot(sakatashi$調査年, sakatashi$`#D02206_課税対象所得(納税義務者1人当たり)【千円】`, + xlab = "年度", ylab = "課税対象所得(納税義務者1人当たり)【千円】", type = "b")
もし、データに NA
(欠損値)がある場合は、折れ線ではプロットできない。
その場合は、データから NA
が入っている行を削除する必要がある。
例えば、酒田市の「人口増減率【%】」の推移を折れ線でプロットしたい場合は以下のようにする。
> sakatashi2 <- na.omit(sakatashi[,c("調査年", "#A05101_人口増減率【%】")]) > plot(sakatashi2$調査年, sakatashi2$`#A05101_人口増減率【%】`, + xlab = "年度", ylab = "人口増減率【%】", type = "b")
sakatashi[,c(“調査年”, “#A05101_人口増減率【%】”)]
で sakatashi から「調査年」と「#A05101_人口増減率【%】」の列だけを抽出している。
na.omit()
は NA
が含まれる行を削除する関数である。
CSV ファイル名は yamagata.csv にしている。
sakatashi$地域 <- NULL xlab = "年度", ylab = "人口増減率【%】", type = "b")