SAS WHERE

【SAS】WHEREステートメントはIFステートメントと同様に処理条件を設定できる。(分岐)

投稿日:2021年12月3日 更新日:

今回はWHEREステートメントについて解説します。


/* where */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1 in (1111, 2222, 3333);
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。

/* where 条件1つ */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1 in (1111);
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。(条件が1つでも使える)

/* where 条件文字列 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Char1 in ("AAAA", "BBBB", "CCCC");
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。
  • 文字列型でも設定できる。

/* where 数値型と文字列 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1 in ("AAAA", "BBBB", "CCCC");
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。
  • 文字列型でも設定できる。
  • 型が合っていないとエラーとなる。

/* 5555,6666,7777 */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1 in (5555, 6666, 7777);
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。
  • 条件に合う値が無いと0レコードのデータセットが出力される。

/* where or */
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1=1111 or Id1=2222 or Id1=3333;
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略せずに、通常通り記載することもできる。

data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1=1111 and Char1="AAAA";
run;

  • whereを用いて処理条件を設定できる。
  • if文と同様、andも使える。

/*where文が複数*/
data data1;
  Id1=1111; Char1="AAAA";
    output;
  Id1=2222; Char1="BBBB";
    output;
  Id1=3333; Char1="CCCC";
    output;
  Id1=4444; Char1="DDDD";
    output;
run;


data data2; set data1;
  where Id1 in (1111, 2222, 3333);
  where Id1 in (1111, 4444);
run;

  • whereを用いて処理条件を設定できる。
  • or条件を簡略して記載できる。
  • where文が複数あるとき、最後のwhere文が優先される。

-SAS, WHERE

執筆者:


comment

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

関連記事

【SAS】FREQプロシージャは頻度集計とクロス集計をする その2【LIST】【CROSSLIST】【NOROW】【NOCOL】

今回はFREQプロシージャにオプションを用いた場合について解説します。  FREQプロシージャの基本的な使い方については過去記事で解説しています。⇒【SAS】FREQプロシージャは頻度集計とクロス集計 …

【SAS】FREQプロシージャは頻度集計とクロス集計をする

今回はFREQプロシージャについて解説します。 /* freq 頻度集計 */ data data1; 番号=”AAAAAA”; コード=”02″; 金額=1999; output; 番号=”AAAA …

【SAS】^=(ノットイコール)

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

【SAS】SASで良く使うテクニック。その5 「SUM関数」~データセットの差分がいくつあるのか数えたい時~【Excel】

今回はSASで良く使うテクニックということで、データセットの差分がいくつあるのか数えたいときは「SUM関数」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その1 E …

【SAS】NODUPはソート時に全ての変数における重複を削除する

今回はNODUPについて解説します。 前回NODUPKEYについて解説しました。 【SAS】NODUPKEYはソート時に重複を削除する 今回のNODUPは前回の文法の亜種という感じです。 /*nodu …