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】SUBSTR関数は文字列から指定した文字数分切り取る。

今回はSUBSTR関数について解説します。 /* 正常形 */ data data1; id1=”123456789″; output; run; data data2; set data1; id2 …

【SAS】PUTは数値型を文字型に変換する

今回はPUTについて解説します。 /*数値8桁*/ data work.a; a = put(20061228, 8.); run; 数値型⇒文字型への変換はputを使う。数値型20061228⇒文字 …

【SAS】INDEXC関数は文字列から特定の文字を探して位置を返す。

今回はINDEXC関数について解説します。 data data1; Id1=”1111″; Id2=”1111″; Id3=”1111″; output; Id1=”2111″; Id2=”2111″ …

【SAS】WHEREステートメントはPRINTプロシージャ内で使用ができる。【IFステートメントは使えない】【SAS Base Programming対策6】

/* where */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; Id2=2222; Id3=2222; output; …

【SAS】SASで良く使うテクニック。その2 「Ctrl+R」~データセットの列数が多いとき~【Excel】

今回はSASで良く使うテクニックということで、データセットの列数が多いときは「Ctrl+R」が役に立つ理由を解説していきます。 データセットのコンペアを行う場面を想定します。 先に以下の2記事を読んで …