Learn R Programming

japanstat

README is currently only available in Japanese.

japanstatは日本政府統計のポータルサイトであるe-StatのAPIを利用するためのツールを提供します. クエリの自動生成,データの収集,フォーマットなどの機能を備えています.

e-Stat APIの利用にはアカウント登録 (appIdと呼ばれるAPIキーの発行) が必要です (詳しくはホームページを参照してください). また,データ利用に際しては利用規約に従う必要があります.

「このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。」

インストール方法

install.packages("japanstat")

japanstatの開発版は,GitHubから以下の方法でインストールできます.

# install.packages("devtools")
devtools::install_github("UchidaMizuki/japanstat")

使用方法

library(japanstat)
library(magrittr)

データ取得・整形の概要

データ取得・整形の一連の流れは以下のようになります.詳細な使用方法は次の項目で説明します.

# APIキーの設定
estat_set_apikey("Your e-Stat appId")
# メタ情報の取得
census_2015 <- estat("https://www.e-stat.go.jp/dbview?sid=0003411172")

# 列名・アイテム数・属性変更
census_2015 <- census_2015 %>%
  
  estat_activate("表章項目") %>% 
  filter(name == "人口") %>% 
  select() %>% 
  
  estat_activate("全国", "region") %>% 
  select(code, name) %>% 
  
  estat_activate("時間軸", "year") %>% 
  filter(name %in% c("2000年", "2005年", "2010年", "2015年")) %>% 
  select(name)

# データのダウンロード
census_2015 <- estat_download(census_2015, "pop")
#> The total number of data is 12.

knitr::kable(census_2015)
region_coderegion_nameyearpop
100全国2000年126925843
100全国2005年127767994
100全国2010年128057352
100全国2015年127094745
110市部2000年99865289
110市部2005年110264324
110市部2010年116156631
110市部2015年116137232
120郡部2000年27060554
120郡部2005年17503670
120郡部2010年11900721
120郡部2015年10957513

データ取得・整形の流れ

japanstatでは,e-Stat APIのメタ情報取得 (getMetaInfo) と統計データ取得 (getStatsData) を用いて,統計表をダウンロードが可能です. 以下のように,APIキー (appId) をあらかじめ設定してください.

estat_set_apikey("Your e-Stat appId")

e-Statでは,統計表ごとに統計表ID (statsDataId) が付与されています.統計表IDは, データセット情報ページ (例1) や 統計表・グラフ表示ページ (例2) のURLからも取得することが可能です.

ここでは,例2に挙げた2015年国勢調査データを対象とします. まず,データセット情報ページなどのURLまたは統計表ID (statsDataId) を,estat()関数に入力してメタ情報 (統計データの属性情報) を取得します.

# 2015年国勢調査 データセット情報ページ URL
census_2015 <- estat("https://www.e-stat.go.jp/dbview?sid=0003411172")
census_2015
#> # Keys
#> # [ ] tab  : 表章項目                     > tab   [2]  (code, name, level, unit)
#> # [ ] cat01: 全国,市部,郡部2015         > cat01 [3]  (code, name, level, parentCode)
#> # [ ] time : 時間軸(調査年組替表記有り) > time  [26] (code, name, level, parentCode)
#> #
#> # No active key

estat_table_info()関数で統計表情報を表示します.

knitr::kable(estat_table_info(census_2015))
namevalue
@id0003411172
STAT_NAME00200521国勢調査
GOV_ORG00200総務省
STATISTICS_NAME平成27年国勢調査 最終報告書「日本の人口・世帯」統計表
TITLE1人口及び人口の割合-全国,全国市部・郡部(大正9年~平成27年)
CYCLE-
SURVEY_DATE201501-201512
OPEN_DATE2020-05-22
SMALL_AREA0
COLLECT_AREA該当なし
MAIN_CATEGORY02人口・世帯
SUB_CATEGORY01人口
OVERALL_TOTAL_NUMBER130
UPDATED_DATE2021-06-25
STATISTICS_NAME_SPEC平成27年国勢調査最終報告書「日本の人口・世帯」統計表
DESCRIPTION
TITLE_SPEC人口及び人口の割合-全国,全国市部・郡部(大正9年~平成27年)1) 1945年は人口調査による。1945年及び1947年の沖縄県は調査されなかったため, 含まれていない。2) 1960年の長野県西筑摩郡山口村と岐阜県中津川市の間の境界紛争地域の人口(73人)及び岡山県児島湾干拓第7区の人口(1,200人)は, 全国に含まれているが, 市部又は郡部には含まれていない。3) 2010年(組替)は,2015年10月1日現在の市町村の境域に基づいて組み替えた2010年の人口を示す。4) 2010年(組替)人口5万以上の市町村は,2015年10月1日現在の人口5万以上の市町村における2010年の人口を示す。5) 2010年(組替)人口5万未満の市町村は,2015年10月1日現在の人口5万未満の市町村における2010年の人口を示す。

当該データには,tabcat01timeの3種類の列 (以下,キーと呼びます) が存在します. それぞれのキーの (>の) 右側には以下の情報が記載されています.

  1. デフォルトでの列名 (tabなど)
  2. アイテム数 ([2]など)
  3. コード・名称などの属性 ((code, name, level, unit)など)

ここからは,それぞれのキーごとに列名・アイテム数・属性を変更する方法を説明します. それぞれのキーの情報を変更するためには,estat_activate()関数を用いてキーを選択します. estat_activate()では,正規表現パターンでキーを選択します (複数マッチする場合にはエラー). また,estat_activate_tab()関数などidでのキー選択も可能です.

例えば,以下のようにtabキーをアクティブにします.

census_2015
#> # Keys
#> # [ ] tab  : 表章項目                     > tab   [2]  (code, name, level, unit)
#> # [ ] cat01: 全国,市部,郡部2015         > cat01 [3]  (code, name, level, parentCode)
#> # [ ] time : 時間軸(調査年組替表記有り) > time  [26] (code, name, level, parentCode)
#> #
#> # No active key

census_2015 %>% 
  # estat_activate_tab()
  estat_activate("表章項目")
#> # Keys
#> # [x] tab  : 表章項目                     > tab   [2]  (code, name, level, unit)
#> # [ ] cat01: 全国,市部,郡部2015         > cat01 [3]  (code, name, level, parentCode)
#> # [ ] time : 時間軸(調査年組替表記有り) > time  [26] (code, name, level, parentCode)
#> #
#> # A tibble: 2 x 4
#>   code  name             level unit 
#>   <chr> <chr>            <chr> <chr>
#> 1 020   人口             ""    人   
#> 2 1420  市部,郡部別割合 ""    %

キーをアクティブにすると当該キーのアイテム情報が表示されます. さらに,filter()関数やselect()関数を用いてアイテム情報の絞り込みなどが可能です. ここでは,「人口」のみを選択します.

census_2015 <- census_2015 %>% 
  estat_activate("表章項目") %>% 
  filter(name == "人口") %>% 
  # アイテム数が1つのみであるため列を全て削除
  select()

次に,cat01の「全国,市部,郡部2015」を選択します.cat01では,属性が分かりづらいため,estat_activate()関数 (ここでは,"region") で名称の変更を行います. また,上と同様に属性の絞り込みを行います. ここでは,codename列を選択します.この場合,ダウンロードデータの列名は,それぞれ,region_coderegion_nameになります.

census_2015 <- census_2015 %>% 
  # estat_activate_cat(1, "region") %>% 
  estat_activate("全国", "region") %>% 
  select(code, name)

上と同様に,timeの「時間軸(調査年組替表記有り)」の名称変更・属性絞り込みを行います. ここでは,2000~2015年データを選択します.

census_2015 <- census_2015 %>% 
  estat_activate("時間軸", "year") %>% 
  filter(name %in% c("2000年", "2005年", "2010年", "2015年")) %>% 
  select(name)

以上の操作により,以下のように列名・アイテム数・属性が変更できました.

census_2015
#> # Keys
#> # [ ] tab  : 表章項目                     > tab    [1] ()
#> # [ ] cat01: 全国,市部,郡部2015         > region [3] (code, name)
#> # [x] time : 時間軸(調査年組替表記有り) > year   [4] (name)
#> #
#> # A tibble: 4 x 1
#>   name  
#>   <chr> 
#> 1 2000年
#> 2 2005年
#> 3 2010年
#> 4 2015年

最後に,estat_download()関数を用いてデータをダウンロードします.

census_2015 <- census_2015 %>%
  # 値の名称を"pop"とする
  estat_download("pop")
#> The total number of data is 12.
knitr::kable(census_2015)
region_coderegion_nameyearpop
100全国2000年126925843
100全国2005年127767994
100全国2010年128057352
100全国2015年127094745
110市部2000年99865289
110市部2005年110264324
110市部2010年116156631
110市部2015年116137232
120郡部2000年27060554
120郡部2005年17503670
120郡部2010年11900721
120郡部2015年10957513

Copy Link

Version

Install

install.packages('japanstat')

Monthly Downloads

196

Version

0.1.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Mizuki Uchida

Last Published

November 29th, 2021

Functions in japanstat (0.1.0)

estat_download

Download 'e-Stat' data
reexports

Objects exported from other packages
estat_activate

Determine which estat object key to edit.
estat_set_lang

Set language of 'e-Stat' API
estat

Get meta-information of 'e-Stat' data
estat_set

Set attributes of 'e-Stat' API
japanstat

Tools for easy use of 'e-Stat' API
estat_table_info

Get table information for 'e-Stat' data
estat_census_2020

Population of the 2020 census
estat_set_apikey

Set 'appId' of 'e-Stat' API