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】IFステートメントは処理を分岐できる。その4~THEN DO, ELSE DO~【END】

今回はIF文の分岐で、複数の命令を実行する方法について、解説していきます。 【併せて読みたい記事】 【SAS】IFステートメントは処理を分岐できる。その1 | ビジネスイッチ (how-to-busi …

【SAS】TRIM関数は文字列の連結時に末尾のスペースを除去できる。

今回はTRIM関数について解説します。 /* trim */ data data1; Id1=1111; Char1=”AA AA”; output; Id1=2222; Char1=” BBBB”; …

【SAS】DATETIME関数はSAS日時値を取得する。

今回はDATETIME関数について解説します。 /* datetime_1 */ data data1; aaaa = datetime(); run; datetime()はSAS時間値を取得する。 …

【SAS】プロパティ表示を使う方法

今回はプロパティ表示について触れていきます。 /* data1_1 */ data data1; id1=”1111″; id2=”1111″; id3=”1111″; output; id1=”22 …

【SAS】SUMは足し算をする。その1【SQL】

今回はSQLのSUMについて解説します。 /* SUM_1 */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; Id2=222 …