R言語で年齢や月齢を計算する。

  • 11
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

目的

R言語で年齢や月齢を計算する。
(年単位や月単位で2つの日付差を計算する)

方法

(生年月日を1981/07/05とした場合)

年齢を求める

length(seq(as.Date("1981/07/05"), Sys.Date(), "year"))-1

月齢を求める

length(seq(as.Date("1981/07/05"), Sys.Date(), "month"))-1

詳細

年齢を計算するアルゴリズムとしては、

age = floor((20140917 - 19810705) / 10000); // PHPの場合

が有名ですが、型変換を行うとコードが煩雑になってしまうケースも多いと思います。

普通、Rで日付差を計算するにはdifftime()を使いますが、残念ながら週単位までしか使えません。

ということで、連続データを生成するseq()を使い、開始日~終了日(今回で言うと誕生日から処理日)までの年行列あるいは月行列を生成し、その数をカウントして年差、月差を計算しています。seq()は開始日を行列に含めるので、-1して年齢、月齢としています。