Rでオープンデータを触ってみる。

Rに慣れるために自前でCovid19関連のデータの描画を試みたメモ

 

データを取得する

まずはこのページを見ながらAPI Keyを取得します。ここは簡単。

https://portal.opendata.go.jp/quickstart

RでAPIを使う

ここからすでに難しい。少し検索した結果、httrパッケージのGET関数を使うことにした。*1

keyは上記で取得したAPI Key。これで厚労省発表の陽性者数の日次データが取れます。

library(httr)

 

url <- "https://api.opendata.go.jp/"
api.positive_cases <- "mhlw/positive-cases"
key <- "xxxx"

 

positive_cases_res <- GET(url, path = api.positive_cases,query = list(apikey = key))
positive_cases <- content(positive_cases_res)

 データ成形

中身を見るとこんな感じ。

> head(positive_cases)
[ [1]]
[ [1]]$日付
[1] "2020/1/16"

[ [1]]$`PCR 検査陽性者数(単日)`
[1] "1"


[ [2]]
[ [2]]$日付
[1] "2020/1/17"

[ [2]]$`PCR 検査陽性者数(単日)`
[1] "0"

 データフレームにしときます。*2

#各要素をベクトルに変換
date <- as.Date(as.character(lapply(positive_cases,"[[",1)))
pos_cases <- as.numeric(lapply(positive_cases,"[[",2))

#データフレーム化
positive_cases.df <- data.frame(date,pos_cases)

 時系列データにもしときます。*3

#時系列データ化
positive_cases.ts <- ts(pos_cases,start = c(2020,1,16),frequency = 365)

 プロットしてみる

こんな感じです。tsの方が見やすいかな。

#時系列プロット
plot(positive_cases.df, ylab = "PositiveCases")
plot(positive_cases.ts, ylab = "PositiveCases")

f:id:soixante-deux:20210716191047p:plain

f:id:soixante-deux:20210716191117p:plain

今日はここまで。途中で試行錯誤しているので結構時間がかかった。

 

decomposeしたかったけど、データが足りないのでうまくいかない。

> plot(decompose(positive_cases.ts))
Error in decompose(positive_cases.ts) :
time series has no or less than 2 periods

そもそも明らかにWeeklyの周期性があるので、それを除いてみたいところ。

 

以下が参考になるかもしれないけど、きちんと読んでいない。

www.r-bloggers.com