ユーザ用ツール

サイト用ツール


socialip_2021:lecture2

【社会情報処理】第2回 データの取得

政府統計の総合窓口(e-Stat)のデータを利用する。

https://www.e-stat.go.jp/

政府統計の総合窓口(e-Stat)は、各府省が公表する統計データを一つにまとめ、統計データを検索したり、地図上に表示できるなどの、たくさんの便利な機能を備えた政府統計のポータルサイトです。
政府統計名が不明の場合でも、「分野」や「組織」等から絞り込むことで統計データを探すことができます。

e-Statからデータのダウンロード

e-Stat から山形県の市町村における指標データを取得する。


地域選択

まずは地域を選択する。

  1. Web ブラウザで e-Stat にアクセスする。
  2. 「●統計データを活用する」の [地域] をクリックする。
  3. [市区町村データ] を選択し、[データ表示] をクリックする。
  4. 「絞り込み」の「地域区分」で [山形県] を選択する。
  5. 「地域候補」の[全て選択>] をクリックする。
  6. [確定] をクリックする。

指標データの選択

次にどのような指標データをダウンロードするか項目を選択する。

  1. 「データ種別」の [指標データ] をクリックする。
  2. 「分野」から分野を選択する。
  3. 「項目候補」から項目を選択する。複数の項目を同時に選択する場合は、[Ctrl] キーを押しながらクリックしていけばよい。
  4. [項目を選択] をクリックする。
  5. 欲しい項目を選択し終わるまで手順 2,3,4 を繰り返す。
  6. 選び終わったら [確定] をクリックする。

ここでは以下の項目を選択することにする。

  • #A 人口・世帯
    • #A0411001_未婚者割合(15歳以上人口)【%】
    • #A05101_人口増減率【%】
    • #A05301_転入超過率(日本人移動者)【%】
    • #A06202_核家族世帯割合【%】
  • #D 行政基盤
    • #D02206_課税対象所得(納税義務者1人当たり)【千円】
  • #F 労働
    • #F01201_第1次産業就業者比率【%】
    • #F01202_第2次産業就業者比率【%】
    • #F01203_第3次産業就業者比率【%】
    • #F01301_完全失業率【%】

[確定] をクリックすると表にデータが表示される。


CSV ファイルのダウンロード

最後に選択した項目のデータを CSV ファイルとしてダウンロードする。

  1. 右上の [ダウンロード] をクリックする。
  2. ダイアログが開くので以下のように選択する。表のダウンロード
    ※これらの項目は2021年7月1日現在のもの
    ※うまく表示されないときは [F5] ボタンでリロード(再読込)する。
    • ファイル形式:[CSV形式]
    • ヘッダの出力:[出力しない]
    • コードの出力:[出力しない]
    • 階層コードの出力:[出力しない]
    • 凡例の出力:[出力しない]
    • [注釈を表示する] のチェックを外す
    • [桁区切り(,)を使用しない]
    • 特殊文字の選択:[NAに置き換える]
  3. [ダウンロード] をクリックする。
  4. ファイルを保存する。

大学の情報環境では、おそらく ~/Download~/Desktop に保存される。

小テスト

Moodle Server(非公式)で第2回の小テストを受験しなさい。

RStudioサーバにアップロード

ダウンロードしたファイルは手元の端末(クライアント)にあるので、それを RStudio サーバにアップロードしなければ RStudio で読み込めない。

サーバにアップロードする手順は以下の通りである。

  1. 右下のペインを [Files] タブにする。
  2. [Upload] をクリックする。
  3. [参照] をクリックしてアップロードしたいファイルを選ぶ。

CSVファイルの読み込み

RStudio で読み込める CSV ファイルの文字コードはデフォルトでは UTF-8 である。 一方、e-Stat からダウンロードした CSV ファイルは文字コードが Shift-JIS なので、読み込むには少し設定が必要である。


手動で読み込み

  1. 右下のペインを [Files] タブにする。
  2. 読み込みたいファイルをクリックし、[Import Dataset] を選択する。「不正なマルチバイト文字があります」というエラーが出るが気にせず [OK] をクリックする。
  3. Import Text Data のダイアログが表示される。
    • Name に「df」と入力する。
    • Locale で [Configure] をクリックし、Encoding で [SHIFT-JIS] を選んで [Configure] をクリックする。
  4. [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 が含まれる行を削除する関数である。

課題

Moodle Server(非公式) で第2回の課題を行いなさい。

締め切り:2021年7月1日(木)20時


解答例

CSV ファイル名は yamagata.csv にしている。

readcsv.R
  1. library(readr)
  2.  
  3. df <- read_csv("yamagata.csv", locale = locale(encoding = "SHIFT-JIS"))
  4.  
  5. df$`/項目` <- NULL
  6. df$調査年 <- as.numeric(sapply(df$調査年, gsub, pattern="年度", replacement = ""))
  7. df <- df[order(df$調査年),]
  8.  
  9. sakatashi <- df[df$地域 == "山形県 酒田市",]
  10. sakatashi$地域 <- NULL
  11.  
  12. sakatashi2 <- na.omit(sakatashi[,c("調査年", "#A05101_人口増減率【%】")])
  13. plot(sakatashi2$調査年, sakatashi2$`#A05101_人口増減率【%】`,
  14. xlab = "年度", ylab = "人口増減率【%】", type = "b")
socialip_2021/lecture2.txt · 最終更新: 2022/04/02 17:15 by you