IF NOBS SAS

【SAS】データセットのオブザベーション数で処理を分岐させる方法【IF】【NOBS】

投稿日:

今回は、データセットのオブザベーション数により、処理を分岐させる方法について解説していきたいと思います。

(参考:【SAS】データセットの有無で処理を分岐させる方法【%IF】【EXIST】 | ビジネスイッチ (how-to-business.com)


/* 1オブザベーション*/
data data1;
 id1 = "1111";
run;

data data2; set data1;
  if id1 = "1111" then output;
run;

data data3;
  if NOBS = 0 then do;
    id1 = "blank";
    output;
  end;
  
set data2 nobs=NOBS;
  output;
run;
  • nobs=NOBSにより、オブザベーション数「1」をNOBSに格納。
  • NOBS=1なので、何もせずid1を出力。

/* 0オブザベーション*/
data data1;
 id1 = "1111";
run;

data data2; set data1;
  if id1 = "2222" then output;
run;

data data3;
  if NOBS = 0 then do;
    id1 = "blank";
    output;
  end;
  
set data2 nobs=NOBS;
  output;
run;
  • nobs=NOBSにより、オブザベーション数「0」をNOBSに格納。
  • NOBS=0なので、id1=”blank”

/* 空の1オブザベーション */
data data2;
  attrib id1 length=$5.; 
run;

data data3;
  if NOBS = 0 then do;
    id1 = "blank";
    output;
  end;
  
set data2 nobs=NOBS;
  output;
run;
  • attribを使うと空の1オブザベーションとなってしまう為、注意。
  • nobs=NOBSにより、オブザベーション数「1」をNOBSに格納。
  • NOBS=1なので、何もせずid1を出力。

-IF, NOBS, SAS

執筆者:


comment

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

関連記事

【SAS】DISTINCTは重複をユニークにする。【SQL】

今回はSQL文のDISTINCTについて解説します。 /* Id1 */ data data1; Id1=1111; Id2=1111; Id3=1111; Id4=1111; output; Id1 …

【SAS】SAS日時値からSAS時間値に変換する方法【TIMEPART】【DATETIME】【TIME】

今回はDATETIMEでSAS日時値を取得した後、SAS時間値に変換する方法について解説していきます。 (つまり、DATETIMEの値からTIMEの値に変換する) (DATETIME:【SAS】DAT …

【SAS】INTNX関数は指定期間の条件を満たす日付けを返す。その2

今回はINTNX関数について追加で解説します。 過去記事では INTNX関数 の使い方(引数3つ)について解説しました。⇒【SAS】INTNX関数は指定期間の条件を満たす日付けを返す。 | ビジネスイ …

【SAS】INTNX関数は指定期間の条件を満たす日付けを返す。

今回はINTNX関数について解説します。 /* intnx_1 */ data data1; Id1 = intnx(“YEAR”,’16jan2022’d,1); format Id1 yymmdd …

【SAS】SASで良く使うテクニック。その3 「Ctrl+D」~データセットのオブザベーション数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットのオブザベーション数(行数)が多いときは「Ctrl+D」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その …