都道府県別の平均年収

はじめに

先日、choroplethrを使って、AV女優の出身地分布を可視化しました。

この記事をChoroplethrパッケージの作者の方に捕捉されまして、申し訳ない気持ちになりました。

今回は、真面目に使ってみます。

都道府県別の平均年収を可視化してみます。

dodaさんのホームページにいい感じのデータがありましたので、えいやっとスクレイプします。

準備

library(data.table)
library(dplyr)
library(choroplethr)
library(choroplethrAdmin1)
library(choroplethrMaps)
library(rvest)

スクレイプして整形

Dodaさんのホームページ.htmlをパースして、必要なデータを抜き出します。

rvestパッケージの関数を用いると楽です。

使い方に自信はありませんが、とりあえず年収の平均値と中央値は抜き出せました。

## htmlを取ってくる
doda_html = rvest::html("http://doda.jp/guide/heikin/2012/area/data.html")

## 県名
pref = doda_html %>% 
  html_node('#ranking_all') %>% 
  html_node("tbody") %>% 
  html_nodes(xpath="tr/td[3]") %>% 
  html_text()

## 平均値
income_mean = doda_html %>% 
  html_node('#ranking_all') %>% 
  html_node("tbody") %>% 
  html_nodes(xpath="tr/td[4]") %>% 
  html_text()

## 中央値
income_median = doda_html %>% 
  html_node('#ranking_all') %>% 
  html_node("tbody") %>% 
  html_nodes(xpath="tr/td[5]") %>% 
  html_text()


## 内容確認
income_df = data.table(pref = pref, 
                       income_mean = income_mean,
                       income_median = income_median)

Choroplethrで可視化する

Choroplethrで可視化します。

県名を英語にして、admin1_choroplethに流しこむだけです。

県名を英語にするのが面倒だったので、以前利用したデータを使い回します。

dat_pref = fread("pops.csv") %>% dplyr::select(-V3)
dat_pref %>% setnames(c("pref", "yomi"))

dat_pref_for_plot = 
  dat_pref %>% merge(income_df, by = "pref") %>% 
  mutate(region = tolower(yomi), value = as.integer(income_mean))

## 内容確認
dat_pref_for_plot %>% head
##      pref     yomi income_mean income_median   region value
## 1: 三重県      Mie         416           380      mie   416
## 2: 京都府    Kyoto         403           360    kyoto   403
## 3: 佐賀県     Saga         395           350     saga   395
## 4: 兵庫県    Hyogo         428           380    hyogo   428
## 5: 北海道 Hokkaido         383           350 hokkaido   383
## 6: 千葉県    Chiba         456           400    chiba   456
dat_pref_for_plot %>% 
  admin1_choropleth(country.name="japan", legend="income", 
                    title = "mean income")

plot of chunk unnamed-chunk-3

出来ました!