IF INTCK PUT SAS SUBSTR

【SAS】INTCK関数を使って年齢計算をする。【PUT】【SUBSTR】【IF】

投稿日:

今回はINTCK関数を使って、年齢計算を行う方法について解説していきたいと思います。

併わせて読みたい記事

(INTCK:【SAS】INTCK関数は指定された区間に指定された単位を何回跨ぐか数える。 | ビジネスイッチ (how-to-business.com)

(PUTによる表示変換:【SAS】PUTはSAS日付値をフォーマットを変換して表示する【DATE】【YYMMDD】【DATETIME】【TIME】【TOD】 | ビジネスイッチ (how-to-business.com)

(SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-business.com)

(IF:【SAS】IFステートメントは処理を分岐できる。その2~ELSE IF、ELSE~ | ビジネスイッチ (how-to-business.com)

INTCK関数を使えば、区間内に年を何回跨ぐか、数えることができるため、年齢計算に使えそうです。


/* intck_1 */
data data1;
  Id1 =intck("YEAR", '31Dec2019'd, '1Jan2020'd);
run;
  • 2019/12/31~2020/1/1の間に年を1何回跨ぐ。

このままだと、1日しか経ってないのに、1歳と見なされてしまうので、工夫が必要です。

誕生日前なら-1、誕生日を迎えたらこのままでも辻褄は会いそうです。


/* intck_2、誕生日前 */
data data1;
   id1 = '31Dec2019'd;
   Id2 =intck("YEAR", '31Dec2019'd, '1Jan2020'd);
   if substr(put('1Jan2020'd,yymmddn8.),5,8) lt substr(put('31Dec2019'd,yymmddn8.),5,8) then Id3 = Id2 - 1;
   else Id3 = Id2;
run;
  • 2019/12/31~2020/1/1の間に年を1何回跨ぐ。
  • 1/1は12/31の誕生日を迎えて無いため、-1される。
  • 年齢は0歳

/* intck_3、誕生日 */
data data1;
   id1 = '31Dec2019'd;
   Id2 =intck("YEAR", '31Dec2019'd, '31Dec2020'd);
   if substr(put('31Dec2020'd,yymmddn8.),5,8) lt substr(put('31Dec2019'd,yymmddn8.),5,8) then Id3 = Id2 - 1;
   else Id3 = Id2;
run;
  • 2019/12/31~2020/12/31の間に年を1何回跨ぐ。
  • 12/31は12/31の誕生日を迎えているため、数字をそのまま使う。
  • 年齢は1歳

/* intck_4、今日 */
data data1;
   id1 = '31Dec2019'd;
   Id2 =intck("YEAR", '31Dec2019'd, today());
   if substr(put(today(),yymmddn8.),5,8) lt substr(put('31Dec2019'd,yymmddn8.),5,8) then Id3 = Id2 - 1;
   else Id3 = Id2;
run;
  • 2019/12/31~today(2023/1/29)の間に年を4何回跨ぐ。
  • 1/29は12/31の誕生日を迎えていないため、-1をする。
  • 年齢は3歳

-IF, INTCK, PUT, SAS, SUBSTR

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】WORKライブラリの性質について解説

今回はWORKライブラリについて解説します。 libnameを使わなくてもデフォルトで存在するライブラリです。 そのため、libnameを使わずにworkライブラリを使用することができます。 /* l …

【SAS】LIBNAMEはディレクトリパスをライブラリに割り当てる

今回はLIBNAMEについて解説します。 ちなみにSAS Base Programmingでは、LIBNAMEができないと前半の記述問題が解けません。(データセットが与えられるので、割り当てられないと …

【SAS】YYYY-MM表記にする方法【SUBSTR】【||】

今回はYYYYMMDD表記の年月日をYYYY-MM表記にしたいと思います。 結論:SUBSTRと||を使います。 (SUBSTR:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | …

【SAS】SASで良く使うテクニック。その10 「矩形選択」~インデントを入れたい時など~【サクラエディタ】

今回はSASで良く使うテクニックということで、ソースコードにインデントを挿入したい時は、「矩形選択」が役に立つ理由を解説していきます。 「矩形選択」は、インデントの挿入以外にも、同じ文字数分削除をした …

【SAS】IFステートメントは処理を分岐できる。その1

今回はSASのif文について解説していきたいと思います。 【IF文の関連記事】 (明示的、暗黙的OUTPUT:【SAS】OUTPUTとDELETEの「明示的な使い方」「暗黙的な使い方」 | ビジネスイ …