##目的
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して年齢、月齢としています。