BookmarkSubscribeRSS Feed

サブセット化IFステートメントとWHEREステートメントの違い

Started ‎03-13-2018 by
Modified ‎04-19-2018 by
Views 1,879

質問

サブセット化IFステートメントとWHEREステートメントは非常によく似ています。
どう使い分ければよいか教えてください。

回答

サブセット化IFステートメントとWHEREステートメントは、どちらも条件にもとづいてオブザベーションを選択するのに使えます。また構文もよく似ています。しかしこれらのステートメントは、次の点で異なっています。

 

  • オブザベーション選択のタイミング
  • 記述できる条件式
  • 使用できるステップ
●オブザベーション選択のタイミング
オブザベーションを読み込む場合、PDV(プログラムデータベクトル)に値が読み込まれます。
WHEREステートメントはPDVに読み込まれる前に作用します。一方サブセット化IFステートメントはPDVに読み込まれた後に作用します。 この違いにより、次のような相違点が生じます。
 
  • 外部ファイルをINFILE/INPUTで読み込み場合、WHEREステートメントは使用できません。
  • グループ処理を行うときに使用するFIRST.by変数およびLAST.by変数の値の挙動が、WHEREステートメントとサブセット化IFステートメントでは異なることがあります。

 

●記述できる条件式

サブセット化IFステートメントでは、SAS式のルールにもとづく任意の表現が使えます。
一方WHEREステートメントは表現にDATAステップ関数は使えません。 しかしWHEREステートメント特有の便利な各種演算子(CONTAINS、BETWEEN-AND、LIKEなど)が使えます。

 

  • 変数NAMEに"John"が含まれていてAGEが20以下のオブザベーションを選択するWHEREステートメントは、次のように記述できます。
    where name contains "John" and age <= 20;
  • サブセット化IFステートメントでは、同じ条件式を表すのにINDEX関数を使用します。

 

●使用できるステップ

サブセット化IFステートメントはDATAステップでしか使えません。
一方WHEREステートメントは、DATAステップだけでなくPROCステップでも使えます。


PROCステップではWHEREステートメントが使えるので、1つのPROCステップで簡単にデータのサブセットを処理できます。 これは、CPU時間およびディスク容量の節約になります。

 

  • 変数SEXの値が"女子"のオブザベーションについて散布図を作るには、WHEREステートメントを使えばPROCステップだけで処理できます。
    proc plot data=sashelp.class;
       plot weight * height;
       where sex="女子";
    quit;

 

  • サブセット化IFステートメントを使う場合、DATAステップとPROCステップの2つのステップが必要です。
    data female;
       set sashelp.class;
       if sex="女子";
    run;
    
    proc plot data=female;
       plot weight * height;
    quit;

 

Version history
Last update:
‎04-19-2018 03:47 AM
Updated by:
Contributors

sas-innovate-white.png

🚨 Early Bird Rate Extended!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Lock in the best rate now before the price increases on April 1.

Register now!

Article Labels
Article Tags

SAS Support Communitiesのユーザーガイドライン


コミュニティの基本的なガイドラインについてご説明します。まずは、こちらをご参照ください。

詳細を読む

 

SAS Support CommunitiesのFAQ


SAS Support CommunitiesのFAQはヘルプに記載されています。参照方法は、こちらからご確認ください。

詳細を読む

 

質問や意見の投稿と返信方法について


Japan SAS Discussionページに質問や意見(メッセージ)を投稿/返信する方法を簡単にご説明します。

詳細を読む