トップ 一覧 検索 ヘルプ RSS ログイン 印刷

年月型の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! 年月型

月別推移表など、監査では「年月」型の時の表し方がよく用いられる。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"