dalopop is to a helper tool to collect population data in Osaka. dalopop is one of dalo tools which DAta downLOd helper tool.
dalopopは、大阪府の人口データを集めて活用するためのツールです。 大阪府のホームページで公表されている月次の人口データをダウンロードして、 Rのdata.frameパッケージにするための関数を用意しています。
このツールで利用するデータは、 大阪府が公表している 「大阪府の毎月推計人口」に基づくものです。
当該データ自体のライセンスに関する明記はありませんが、 「利用上の注意」のページがあるので目を通してください。
dalopopは、githubからインストールできます。
また、dalopopは、特に、rabbit
パッケージと
dalo
パッケージに依存しているので、以下のようにインストールします。
その他で必要になるパッケージは自動的にインストールされるはずです。
# install.packages("devtools")
devtools::install_github("syunsuke/rabbit")
devtools::install_github("syunsuke/dalo")
devtools::install_github("syunsuke/dalopop")
- ダウンロード用のディレクトリを用意します。
- 現在の大阪府の人口データ公表ページからURLをスクレイピング
- URLに従ってエクセルファイルをダウンロード
- ファイルを取り込んでdata.frameにする
Rプロジェクトを作成し、その中にダウンロード用のディレクトリdl_file
等を作成します。
大阪府の人口データを公表するページでは、毎月更新されているので、その配布ファイルのURLをスクレイピングします。主となるページのURLは以下です。
https://www.pref.osaka.lg.jp/o040090/toukei/jinkou/jinkou-xlslist.html
daloツールのdalo_download_by_urls()
関数を使って、
ファイルをダウンロードします。
この関数の引数check
はデフォルトでTRUEになっており、ダウンロードディレクトリ内に、同名のファイルが既にある場合、ダウンロードを行いません。
FALSEにすることで、強制的にダウンロードして上書きします。
ダウンロードしたエクセルファイルを
dalopop_read_file()
関数を使って読み込みRのdata.frameにします。
以下に、大阪の人口データをRデータとして作成するサンプルコードを示します。
library(dalo)
library(rabbit)
library(dalopop)
# ダウンロードデータを保存するディレクトリを準備して
# パスを変数に割当
dl_dir <- "dl_file/"
# エクセルファイルのURLのベクトルを得る
file_urls <- dalopop_get_data_urls()
# ファイルをダウンロード(既存ファイルはダウンロードしない)
dalo_download_by_urls(urls = file_urls,
dest_dir = dl_dir,
check = TRUE)
# ダウンロードディレクトリ内のファイル一覧を
# ファイルパスのベクトルにする
datafiles <- dir(dl_dir, full.names = TRUE)
# ファイルパスを渡して読み込みdata.frameにする
pop_osaka <- dalopop_read_file(datafiles)
上述のコードで生成されるdata.frameの列は以下のようになっています。 年齢別の部分については5歳づつの20区分になっています。
列名 | 型 | 内容 |
---|---|---|
date | Date | 日付 |
area | chr | 地域名 |
area_id | num | 市区町村コード |
hh | num | 世帯数 (housholds) |
pt | num | 総人口 (population total) |
pm | num | 男性人口 (population male) |
pf | num | 女性人口 (population female) |
yct | num | 年間の総増減 (total change of year) |
ycn | num | 年間の自然増減 (total natural change of year) |
yib | num | 年間の増減 自然 出生 (total natural increase by birth of year) |
ydd | num | 年間の増減 自然 死亡 (total natural decrease by death of year) |
ycs | num | 年間の増減 社会 (total natural change of year) |
mct | num | 月間の総増減 (total change of month) |
mcn | num | 月間の自然増減 (total natural change of month) |
mib | num | 月間の増減 自然 出生 (total natural increase by birth of month) |
mdd | num | 月間の増減 自然 死亡 (total natural decrease by death of month) |
mcs | num | 月間の増減 社会 (total natural change of month) |
pph | num | 1世帯あたりの人口 (person per households) |
ppa | num | 人口密度 (person per area km^2) |
t_total | num | 総人口 |
t_00_04 | num | 0歳から4歳の総人口 |
t_05_09 | num | 5歳から9歳の総人口 |
… | num | … |
t_90_94 | num | 90歳から94歳の総人口 |
t_95_ | num | 95歳以上の総人口 |
t_child | num | 年少総人口(0歳から14歳) |
t_young | num | 生産総人口(15歳から64歳) |
t_old | num | 老年総人口(65歳以上) |
m_total | num | 男性総人口 |
m_00_04 | num | 0歳から4歳の男性人口 |
m_05_09 | num | 5歳から9歳の男性人口 |
… | num | … |
m_90_94 | num | 90歳から94歳の男性人口 |
m_95_ | num | 95歳以上の男性人口 |
m_child | num | 年少男性人口(0歳から14歳) |
m_young | num | 生産男性人口(15歳から64歳) |
m_old | num | 老年男性人口(65歳以上) |
f_total | num | 女性総人口 |
f_00_04 | num | 0歳から4歳の女性人口 |
f_05_09 | num | 5歳から9歳の女性人口 |
… | num | … |
f_90_94 | num | 90歳から94歳の女性人口 |
f_95_ | num | 95歳以上の女性人口 |
f_child | num | 年少女性人口(0歳から14歳) |
f_young | num | 生産女性人口(15歳から64歳) |
f_old | num | 老年女性人口(65歳以上) |
上記で作成した人口データをエクセルファイルとして出力する例は以下のとおりです。
library(openxlsx)
# 日付型の表示の指定
options("openxlsx.dateFormat" = "yyyy/mm/dd")
# data.frameをエクセルファイルとして書き出す
write.xlsx(osaka_pop,file = "osaka_popdata_20240304.xlsx")
上記の処理を一括して行うには、大阪府の人口データエクセルファイルをダウンロードして保存するディレクトリを用意して、そのディレクトリを指定した以下のコマンドでエクセルファイルを得ることが出来ます。
library(dalopop)
# ダウンロードデータを保存するディレクトリを準備して
# パスを変数に割当
dl_dir <- "dl_file/"
dalopop_outputExcelData(dl_dir)
カレントディレクトリにosakapop_202403042020.xlsx
のように日付入のエクセルファイルを作成します。
areasheet
引数はデフォルトでTRUEになっていますが、
これをFALSEにすることで、地域毎にシートを分けず、
一つのシートでエクセルファイルを作成します。
# 地域ごとにシートを分けず、一つのエクセルファイルにする
dalopop_outputExcelData(dl_dir, areasheet = FALSE)
人口データのうち、世帯数、総人口、3区分のみの簡単なデータを簡単に得ることもできます。
library(dalopop)
# ダウンロードデータを保存するディレクトリを準備して
# パスを変数に割当
dl_dir <- "dl_file/"
dalopop_outputSmallExcelData(dl_dir)
データをダウンロードするディレクトリを固定することで、既にダウンロードしたデータを再度ダンロードしなくなるので、処理が早くなります。