【社会情報処理】第2回 データの取得
政府統計の総合窓口(e-Stat)のデータを利用する。
政府統計の総合窓口(e-Stat)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。
政府統計名が不明の場合でも、「分野」や「組織」等から絞り込むことで統計データを探すことができます。
e-Statからデータのダウンロード
e-Stat から山形県の市町村における指標データを取得する。
地域選択
まずは地域を選択する。
- Web ブラウザで e-Stat にアクセスする。
- 「●統計データを活用する」の [地域] をクリックする。
- [市区町村データ] を選択し、[データ表示] をクリックする。
- 「絞り込み」の「地域区分」で [山形県] を選択する。
- 「地域候補」の[全て選択>] をクリックする。
- [確定] をクリックする。
指標データの選択
次にどのような指標データをダウンロードするか項目を選択する。
- 「データ種別」の [指標データ] をクリックする。
- 「分野」から分野を選択する。
- 「項目候補」から項目を選択する。複数の項目を同時に選択する場合は、[Ctrl] キーを押しながらクリックしていけばよい。
- [項目を選択] をクリックする。
- 欲しい項目を選択し終わるまで手順 2,3,4 を繰り返す。
- 選び終わったら [確定] をクリックする。
ここでは以下の項目を選択することにする。
- #A 人口・世帯
- #A0411001_未婚者割合(15歳以上人口)【%】
- #A05101_人口増減率【%】
- #A05301_転入超過率(日本人移動者)【%】
- #A06202_核家族世帯割合【%】
- #D 行政基盤
- #D02206_課税対象所得(納税義務者1人当たり)【千円】
- #F 労働
- #F01201_第1次産業就業者比率【%】
- #F01202_第2次産業就業者比率【%】
- #F01203_第3次産業就業者比率【%】
- #F01301_完全失業率【%】
[確定] をクリックすると表にデータが表示される。
CSV ファイルのダウンロード
最後に選択した項目のデータを CSV ファイルとしてダウンロードする。
- 右上の [ダウンロード] をクリックする。
- ダイアログが開くので以下のように選択する。
※これらの項目は2021年7月1日現在のもの
※うまく表示されないときは [F5] ボタンでリロード(再読込)する。- ファイル形式:[CSV形式]
- ヘッダの出力:[出力しない]
- コードの出力:[出力しない]
- 階層コードの出力:[出力しない]
- 凡例の出力:[出力しない]
- [注釈を表示する] のチェックを外す
- [桁区切り(,)を使用しない]
- 特殊文字の選択:[NAに置き換える]
- [ダウンロード] をクリックする。
- ファイルを保存する。
大学の情報環境では、おそらく ~/Download
か ~/Desktop
に保存される。
小テスト
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$調査年 <- 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 にしている。
- readcsv.R
- sakatashi$地域 <- NULL
- xlab = "年度", ylab = "人口増減率【%】", type = "b")