年月型
月別推移表など、監査では「年月」型の時の表し方がよく用いられる。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"
Last updated 2023-02-14 | auditR (c) N.Nawata