Rで解析:政府統計の総合窓口(e-Stat)のAPIを利用したデータの取得例


政府統計の総合窓口(e-Stat)で提供しているデータをRからAPIを利用して取得する例です。API利用にはホームページでの利用登録が必要です。

利用登録は下記URLにアクセスしてください。簡単にAPI利用に必要なアプリケーションIDが取得できます。

・利用登録のURL
 http://www.e-stat.go.jp/api/regist-login/

リクエストURLやパラメータなどのAPI仕様は下記URLを参考にしてください。実行コマンドのコメントと見比べれば応用的な利用ができると思います。なお、実行コマンドはAPIのバージョンを2.0、6つあるリクエストURLから「データカタログ情報取得」を利用しています。

・政府統計の総合窓口(e-Stat)のAPI 仕様
 http://www.e-stat.go.jp/api/e-stat-manual/

実行コマンドはR version 3.2.2で確認しています。


実行コマンド

詳細はコメント、コマンドのヘルプを確認してください。

#パッケージのインストール
install.packages(c("RCurl", "rjson", "XML"))

#パッケージの読み込み
library("XML")

#アプリIDの入力
#http://www.e-stat.go.jp/api/regist-login/
AppID <- "利用登録して入手したアプリID"

#データカタログの取得
#検索キーワードの設定
searchWord <- "人口動態"
#データの取得数を設定
LimiData <- 30

#リクエストURL 
CatalogURL <- "http://api.e-stat.go.jp/rest/2.0/app/getDataCatalog?appId="

#リクエストURLの作成
RequestURL <- paste0(CatalogURL, AppID, "&searchWord=", searchWord, "&limit=", LimiData)

#結果を取得
GetResult <- xmlParse(RequestURL)

#GetResultからデータを取得
#統計表の政府統計名
StatName <- xpathSApply(GetResult, "//DATA_CATALOG_INF/DATASET/STAT_NAME", xmlValue)
#調査実施時期
Year <- xpathSApply(GetResult, "//DATA_CATALOG_INF/DATASET/TITLE/SURVEY_DATE", xmlValue)
#カタログデータセット名
Title <- xpathSApply(GetResult, "//DATA_CATALOG_INF/DATASET/TITLE/NAME", xmlValue)
#公開されている政府統計の総合窓口(e-Stat)でのURL
LandingPage <- xpathSApply(GetResult, "//DATA_CATALOG_INF/DATASET/LANDING_PAGE", xmlValue)
#データリソースのデータ形式
Format <- xpathSApply(GetResult, "//DATA_CATALOG_INF/RESOURCES/RESOURCE/FORMAT", xmlValue)
#データリソースのデータURL
ResoueceURL <- xpathSApply(GetResult, "//DATA_CATALOG_INF/RESOURCES/RESOURCE/URL", xmlValue)
#データリソース数
ResourcesCheck <- GetResult["//DATA_CATALOG_INF"]
ItemNO <- sapply(ResourcesCheck, xpathSApply, "count(.//RESOURCES/RESOURCE/TITLE/NAME)")

#データの整形
#データファイル,URL取得用変数
MaxJudge <- 0
#マスターListデータ
MasterList <- vector("list", length(StatName))
#個別データ用のList雛形
SubList <- list("政府統計名" = NULL, "調査実施時期" = NULL, "カタログデータセット名" = NULL,
                "e-StatでのURL" = NULL, "データ形式" = NULL, "データURL" = NULL)
#処理
for(i in seq(StatName)){
#政府統計名
SubList[[1]] <- StatName[i]
#調査実施時期
SubList[[2]] <- Year[i]
#カタログデータセット名
SubList[[3]] <- Title[i]
#e-StatでのURL
SubList[[4]] <- LandingPage[i]

if(identical(all.equal(1, ItemNO[i]), TRUE)){

  MaxJudge <- max(MaxJudge, i)
  ItemCount <- MaxJudge
  MaxJudge <- MaxJudge + 1
  
}else{
  
  FMaxJudge <- (MaxJudge + ItemNO[i] - 1)
  ItemCount <- MaxJudge:FMaxJudge
  MaxJudge <- FMaxJudge + 1
  
}

SubList[[5]] <- Format[ItemCount]
SubList[[6]] <- ResoueceURL[ItemCount]

MasterList[[i]] <- SubList

}

#取得したデータの確認
MasterList[[30]]
$政府統計名
[1] "住民基本台帳に基づく人口、人口動態及び世帯数調査"
$調査実施時期
[1] "1996"
$カタログデータセット名
[1] "住民基本台帳に基づく人口、人口動態及び世帯数調査_調査の結果_年次_1996年"
$`e-StatでのURL`
[1] "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_toGL08020103_&tclassID=000001028704&cycleCode=7&requestSender=search"
$データ形式
[1] "XLS" "XLS" "XLS" "XLS"
$データURL
[1] "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000003943375&releaseCount=1"
[2] "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000003943376&releaseCount=1"
[3] "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000003943377&releaseCount=1"
[4] "http://www.e-stat.go.jp/SG1/estat/GL08020103.do?_xlsDownload_&fileId=000003943378&releaseCount=1"

#データの読み込み
#例えばxlsファイルの読み込み
#なお、データURLをブラウザで開くとデータをダウンロードすることができます。
#エラーは気にしない
install.packages("gdata")
library("gdata")
XlsxData <- read.xls(MasterList[[30]]$データURL[3])

少しでも、あなたのウェブや実験の解析が楽になりますように!!

データの加工・プロット等に関するコマンドは難しいリクエストでなければ、記事にしたいと思います。リクエストはtwitterでつぶやいてもらえれば。

スポンサードリンク

おすすめコンテンツ


スポンサードリンク