年齢の計算方法

[OS]ALL
[リリース] 6.x, 8.1
[キーワード] base, date, age, datastep, intck

[質問]

誕生日からその人の年齢を求めたいのですが、どのようにしたら良いでしょうか。
Microsoft Excelでは、「DATADIF」関数を使用し、開始日と終了日と単位を指定すると年齢を表示できますが、SAS関数に同様の機能がありますか。 探したのですが見当たりませんので教えてください。

[回答]

SASには、SAS日付値を扱う関数が用意されています。
(例: TODAY, YEAR, MONTH, DAY, WEEKDAY, MDY, INTCK, INTNX)
これらの関数をご使用になると日付の計算をより簡単に行えます。

(SAS日付値とは1960年1月1日から数えた累積日数です。)

年齢の計算には、INTCK関数をご利用になると便利です。
INTCK関数は、二つのSAS日付値の間に何回、年(又は月)を越すかを求めるものです。

下記の使用例をご参照ください。
(実際には一日しか間隔はございませんが、1年と表示されます。)

<プログラム例>

data _null_;
   year=intck('YEAR', '31Dec1999'd, '1Jan2000'd);
   put year=;
run;

<結果>

YEAR=1
NOTE: DATA statement は 0.13 秒を使用しました.

上の例では数え年が求められます。
下記の例は満年齢を求めるプログラムです。ご参考になさってください。

data _null_;

   /* 現在の日付 */
   current='7SEP2000'd;

   /* 誕生日 */
   birth='22MAY1973'd;

   /* 数え年を求めます */
   age=intck('YEAR', birth, current);

   /* 今年の誕生日がまだ来ていない場合は、数え年から1を引きます */
   if (month(current) < month(birth)) then
      age=age - 1;
   else if (month(current) = month(birth)) and
           day(current) < day(birth) then
           age=age - 1;

   /* 結果の表示 */
   put age=;
run;

[参考]

  • 「SASランゲージ リファレンス, Version 6, First Edition」(注文番号 10067)