====== 【社会情報処理】第2回 データの取得 ======
政府統計の総合窓口(e-Stat)のデータを利用する。
https://www.e-stat.go.jp/
> 政府統計の総合窓口(e-Stat)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。
> 政府統計名が不明の場合でも、「分野」や「組織」等から絞り込むことで統計データを探すことができます。
===== e-Statからデータのダウンロード =====
e-Stat から**山形県の市町村**における**指標データ**を取得する。
----
==== 地域選択 ====
まずは地域を選択する。
- Web ブラウザで [[https://www.e-stat.go.jp/|e-Stat]] にアクセスする。
- 「●統計データを活用する」の [地域] をクリックする。
- **[市区町村データ]** を選択し、[データ表示] をクリックする。
- 「絞り込み」の「地域区分」で **[山形県]** を選択する。
- 「地域候補」の[全て選択>] をクリックする。
- [確定] をクリックする。
----
==== 指標データの選択 ====
次にどのような指標データをダウンロードするか項目を選択する。
* [[https://www.e-stat.go.jp/help/cities/items-select10|分野・分類から項目を選択]]
- 「データ種別」の **[指標データ]** をクリックする。
- 「分野」から分野を選択する。
- 「項目候補」から項目を選択する。複数の項目を同時に選択する場合は、[Ctrl] キーを押しながらクリックしていけばよい。
- [項目を選択] をクリックする。
- 欲しい項目を選択し終わるまで手順 2,3,4 を繰り返す。
- 選び終わったら [確定] をクリックする。
ここでは以下の項目を選択することにする。
* #A 人口・世帯
* #A0411001_未婚者割合(15歳以上人口)【%】
* #A05101_人口増減率【%】
* #A05301_転入超過率(日本人移動者)【%】
* #A06202_核家族世帯割合【%】
* #D 行政基盤
* #D02206_課税対象所得(納税義務者1人当たり)【千円】
* #F 労働
* #F01201_第1次産業就業者比率【%】
* #F01202_第2次産業就業者比率【%】
* #F01203_第3次産業就業者比率【%】
* #F01301_完全失業率【%】
[確定] をクリックすると表にデータが表示される。
----
==== CSV ファイルのダウンロード ====
最後に選択した項目のデータを CSV ファイルとしてダウンロードする。
- 右上の [ダウンロード] をクリックする。
- ダイアログが開くので以下のように選択する。{{ socialip_2021:e-stat_download.png?nolink |表のダウンロード}}\\ ※これらの項目は2021年7月1日現在のもの\\ ※うまく表示されないときは [F5] ボタンでリロード(再読込)する。
* ファイル形式:[CSV形式]
* ヘッダの出力:[出力しない]
* コードの出力:[出力しない]
* 階層コードの出力:[出力しない]
* 凡例の出力:[出力しない]
* [注釈を表示する] のチェックを外す
* [桁区切り(,)を使用しない]
* 特殊文字の選択:[NAに置き換える]
- [ダウンロード] をクリックする。
- ファイルを保存する。
大学の情報環境では、おそらく ''~/Download'' か ''~/Desktop'' に保存される。
===== 小テスト =====
[[KMS>|Moodle Server(非公式)]]で第2回の小テストを受験しなさい。
===== RStudioサーバにアップロード =====
ダウンロードしたファイルは手元の端末(クライアント)にあるので、それを RStudio サーバにアップロードしなければ RStudio で読み込めない。
サーバにアップロードする手順は以下の通りである。
- 右下のペインを [Files] タブにする。
- [Upload] をクリックする。
- [参照] をクリックしてアップロードしたいファイルを選ぶ。
===== CSVファイルの読み込み =====
RStudio で読み込める CSV ファイルの文字コードはデフォルトでは UTF-8 である。
一方、e-Stat からダウンロードした CSV ファイルは文字コードが Shift-JIS なので、読み込むには少し設定が必要である。
----
==== 手動で読み込み ====
- 右下のペインを [Files] タブにする。
- 読み込みたいファイルをクリックし、[Import Dataset] を選択する。「不正なマルチバイト文字があります」というエラーが出るが気にせず [OK] をクリックする。
- Import Text Data のダイアログが表示される。
* Name に「df」と入力する。
* Locale で [Configure] をクリックし、Encoding で [SHIFT-JIS] を選んで [Configure] をクリックする。
- [Import] をクリックすると読み込まれる。
これで 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$ラベル <- NULL
例えば、「/項目」という列は不要なので以下のようにして削除する。
> df$`/項目` <- NULL
----
==== 列の置換 ====
「調査年」の列には "年度" がついているのでこれを削除する。
> df$調査年 <- sapply(df$調査年, gsub, pattern = "年度", replacement = "")
''sapply()'' はリストの全要素に関数を適用するための関数である。
ここでは、「調査年」の列の全要素に ''gsub()'' という関数を引数 ''pattern="年度"'', ''replacement = ""'' で適用している。
''gsub()'' は pattern でマッチした文字列を replacement で置き換える関数である。
pattern には正規表現が使用できる。
また、「調査年」の列は "年度" を削除しても character 型(文字列)のままなので、''as.numeric()'' で numeric 型(実数)に変換する。
df$調査年 <- as.numeric(df$調査年)
----
==== ソート ====
「調査年」の小さい順に並べ替える。
> df <- df[order(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'' が含まれる行を削除する関数である。
===== 課題 =====
[[KMS>|Moodle Server(非公式)]] で第2回の課題を行いなさい。
締め切り:2021年7月1日(木)20時
----
==== 解答例 ====
CSV ファイル名は yamagata.csv にしている。
library(readr)
df <- read_csv("yamagata.csv", locale = locale(encoding = "SHIFT-JIS"))
df$`/項目` <- NULL
df$調査年 <- as.numeric(sapply(df$調査年, gsub, pattern="年度", replacement = ""))
df <- df[order(df$調査年),]
sakatashi <- df[df$地域 == "山形県 酒田市",]
sakatashi$地域 <- NULL
sakatashi2 <- na.omit(sakatashi[,c("調査年", "#A05101_人口増減率【%】")])
plot(sakatashi2$調査年, sakatashi2$`#A05101_人口増減率【%】`,
xlab = "年度", ylab = "人口増減率【%】", type = "b")