« 2017年11月 | トップページ | 2018年1月 »

2017年12月19日 (火)

[R]2つの日付型ベクトルの年の差を求める

日付型ベクトルの差を求めるにはdifftime関数が有名だが、この関数は差を計算させる単位に秒、時、日、週しか扱えず、年は指定できない。

等差数列を求めることができるseq関数は、その差の指定に年を指定することができることから、これを使用して簡単に年の差を計算することができる。seq関数のbyオプションにyearを指定して公差が1年のベクトルを作成し、そのベクトルの長さをlength関数で計算すれば、年の差を求めることができる。なお、seq関数は第1引数を開始として第2引数を超えない等差数列を作成する。満年齢にするために最終的なベクトル数は1引く必要があるので注意。

length(seq(誕生日の日付データ, 年齢を計算させる日付データ, by = "year")) - 1

例として、1987年12月1日生まれの人の年齢を計算してみる。2017年11月30日(29歳)と2017年12月1日(30歳)のそれぞれの年齢は以下のとおり。

> dat1 <- as.Date("1987-12-01")
> dat21 <- as.Date("2017-11-30")
> dat22 <- as.Date("2017-12-01")
> length(seq(dat1, dat21, by = "year")) - 1
[1] 29
> length(seq(dat1, dat22, by = "year")) - 1
[1] 30

« 2017年11月 | トップページ | 2018年1月 »

無料ブログはココログ

■■

■■■