トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン 印刷

年月型

auditR

  年月型

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