!! 年月型 月別推移表など、監査では「年月」型の時の表し方がよく用いられる。Date()オブジェクトには年月という型は用意されていない。 ! zooによる拡張 zooというパッケージを用いると、yearmon(年月)、yearqtr(四半期)の型をもつデータが扱える。 !yearmon (例)「2016年10月」を、年月型のデータにする。 > as.yearmon("2016年10月", "%Y年%B") [1] "10 2016" テンプレートに年があって月がないのは、ロケールの設定により”%B”が「10月」という表記になっているからである。 なお、ロケール設定が日本式になっているときに英語の月を扱うには、次のようにロケールを変更する。 > Sys.setlocale("LC_TIME","C") # ロケールをCにする [1] "C" > as.yearmon("Aug-16","%b-%y") [1] "Aug 2016" > Sys.setlocale("LC_TIME","Japanese") [1] "Japanese_Japan.932" # ロケールを戻す !yearmonを使って経過月数を計算する yearmonは年月だが、yearmon同士の差分Nを取ると経過月数ではなく、N/12(経過年)を返してくる。 よって、12倍すると経過月数が求められる。 library(zoo) > 12 * (as.yearmon("2020/03/31", format = "%Y/%m/%d") - as.yearmon("2020/01/01", format = "%Y/%m/%d") ) [1] 2 > 12 * (as.yearmon("2021/04/30", format = "%Y/%m/%d") - as.yearmon("2020/04/01", format = "%Y/%m/%d") ) [1] 12 > 12 * (as.yearmon("2021/04/30", format = "%Y/%m/%d") - as.yearmon("2020/04/31", format = "%Y/%m/%d") ) [1] NA > 12 * (as.yearmon("2021/04/30", format = "%Y/%m/%d") - as.yearmon("2021/04/1", format = "%Y/%m/%d") ) [1] 0 ! yearqtr 「2016-3Q」をyearqtr型にする。 > as.yearqtr("2016-3Q", "%Y-%q") [1] "2016 Q3" > > as.yearqtr("2016年第3四半期", "%Y年第%q四半期") [1] "2016 Q3" !!個人的メモ データ型はzooパッケージを汎用的に使わない限り、保存したものを再度読み込むときに必ずパッケージの読み込みが必要となる。 日付から文字列を取得する方法で作成するほうが、取り扱いやすいかも。 yymm = format(as.Date("2018-06-30"), "%Y-%m") > "2018-06"