cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

estatapiパッケージで読み込めないデータの取得を諦めない

先日、estatapiパッケージを使って政府統計の総合窓口 e-statが提供する統計データの取得を行おうとしました。

library(tidyverse)
library(estatapi)
df.list <- estat_getDataCatalog(appId = Sys.getenv("ESTAT_TOKEN"), searchWord = "自然公園")
df.tgt <- df.list %>% filter(NAME ==  "1_自然公園の利用者の推移")
df.tgt %>% use_series(`@id`)
##  [1] "000003207752" "000003207753" "000003598436" "000003598437"
##  [5] "000004030647" "000004030648" "000006926442" "000006926443"
##  [9] "000006926486" "000006926487" "000006926510" "000006926511"
## [13] "000007477438" "000007477439" "000007821915" "000007821916"
estat_getStatsData(Sys.getenv("ESTAT_TOKEN"), statsDataId = "000006926486")

検索キーワードに「自然公園」を指定し、統計データの一覧を取得します。その後、データの参照に必要なidをestat_getStatsData()に指定して実行するとエラーになります。idはあっているはずなのにナンデ!?

困っているとパッケージの開発者 id:yutannihilation さんが返信くださいました。

e-stat APIで取得できるデータはestat_getStatsList()! APIで取れないデータはestat_getDataCatalog()!!

というわけでRを使ったデータ取得を諦め… ませんでした。

estat_getDataCatalog()を実行して返ってくるデータフレームにはURLという変数があります。これはデータダウンロードに利用されるURLで、このURLにアクセスすることで対象のデータファイルがダウンロードされます。つまりestatapiの関数にはないですが、このURLを利用すればファイルのダウンロードが可能になるわけです。実際に試してみましょう。ファイルの拡張子についての情報もまたFORMATという変数に保存されています。

download.file(df.tgt$URL[1], paste0("dl_file", ".", tolower(df.tgt$FORMAT[1])))

RからAPIでダウンロードできないe-Statのデータをダウンロードすることができました。めでたしめでたし。

というか、httrでバイナリデータを取得してそれを読み込ませればファイルをダウンロードしなくて済むのでは? と思いきや、それはできなかった。

github.com

期待。