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】SASで良く使うテクニック。その9 「Alt+E+S+V+E」~縦横の並び替えを行いたいとき~【Excel】

今回はSASで良く使うテクニックということで、縦横の並び替えを行いたい時は、「Alt+E+S+V+E」が役に立つ理由を解説していきます。 具体的な使用場面は、 データセットの場合、カラムは横並びですが …

【SAS】COMPAREはデータセットの比較に便利

今回はCOMPAREについて解説します。 /* 正常形 */ data data1; id=”A”; chiku=”SHINJUKU”; output; id=”B”; chiku=”ICHIGAYA …

【SAS】%SYSFUNC関数はデータステップの外でも関数を使えるようにする。その2(%LETステートメント中の挙動)

今回は%SYSFUNC関数について、%LETステートメント中の挙動に着目して解説します。 /* substr */ %let a = substr(123456789, 2, 4); data dat …

【SAS】DROPで良く問われる文法【SAS Base Programming対策8】

今回もDROPについて解説します。 (対比:KEEP 【SAS】KEEPはカラムの選択に使える。 | ビジネスイッチ (how-to-business.com)) 過去記事ではDROPの使い方について …

【SAS】TODAY()とDATE()はどちらもSAS日付値を取得する。

以下の2記事でtoday()を使ってきました。 【SAS】PUT+DATE,YYMMDDはSAS日付値をフォーマットを変換して表示する 【SAS】YYMMDDの可能性を考える(表示できる日付形式はどこ …