- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! 年月型
月別推移表など、監査では「年月」型の時の表し方がよく用いられる。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"