Weekts <- ts(df_inf$W03,start=c(2009,1), frequency = 1)
plot(Weekts)
それはそれで、いいのですが、もっとわかりやすく、間違えることが少ない方法を探ってみました。できれば、命令文中の変数名を書き換えたくありません。
もし、文字列を変数名として利用することができれば、文字列に当該週の数字を入れることで、週単位のデータ更新がしやすくなるはずです。
このように、変数名に連番の要素があり、連番の指定で変数名を指定できれば便利になります。
しかし、いろいろと調べても、「変数名の文字列」を「変数名として利用する」方法は見つかりませんでした。何か方法はあるのかもしれませんが。
とりあえず、文字列を命令文として利用できるeval()関数というものがありましたので、変数名の文字列を含んだ文字列全体を命令文にすることによって、所期の目標を達成できました。
「大(命令文全体の文字列)は、小(命令文中の変数名の文字列)を兼ねる」といった感じです。
まず、wnumという変数に、当該週の数字「03」を代入し、「W03」という文字列を作成し、xwという変数に代入します。
wnum <- "03"
xw <- paste0("W", wnum, sep = "")
wnumt <- 3
下記の、eval()関数の中に、命令文の文字列全体を入れていますが、「get(xw)」という形で、「W03」という文字列を反映させています。wnumに「04」を代入すれば、「W04」になるので、第4週のデータに更新する場合は、「wnum <- "04"」とすればいいことになります。
eval(parse(text = paste("Weekts <- ts(df_inf$",get(xw), ",start=c(2009,1), frequency = 1)")))
eval(parse(text = paste("plot(Weekts,xlab='year',ylab='定点当たり報告数',main='各年のインフルエンザ:第",wnumt,"週の推移')")))
下記のグラフの更新が、「読み込むデータの更新」と「wnum <- "03"」「wnumt <- 3」の数字の更新だけで可能になりました。
これで、データ更新時に、命令文中の変数名を変更しなくて済みます。
また、別のところで、グラフ化するデータを「第n週まで」に絞り込む必要があるので、「wnumt」はその場合にも利用できます。
df_inftidys4 <- df_inftidys4 %>% filter(week_n >= 36 | week_n <= wnumt)
◆新型コロナウイルス感染者の日ごとの推移のグラフを作成する「R」のコード例
グラフのデータは、Kaggleの「Novel Corona Virus 2019 Dataset」のcsvファイルに、「JJohns Hopkins university」のダッシュボードの最新データを追加したものです。
---------------------------------------------------
0 件のコメント:
コメントを投稿