KEEP SAS

【SAS】KEEPはカラムの選択に使える。

投稿日:

今回はKEEPについて解説していきたいと思います。

DROPと対になる感じで、

DROPが指定したカラムを捨てるのに対し、KEEPは指定したカラムのみ残す動きを取ります。

(参考「DROP」:【SAS】DROPはデータセットから変数を削除する | ビジネスイッチ (how-to-business.com)

(参考「DROPオプション」:【SAS】DROPオプションの位置による処理の違い | ビジネスイッチ (how-to-business.com)

KEEPは

  • ステートメント
  • オプション

の2つで使えます。

まずはステートメント。(個人的にはこちらで使う事の方が多いと思います。)


/* ステートメント */
data data1;
 id1="1111"; id2="1111"; id3="1111";
   output;
 id1="2222"; id2="2222"; id3="2222";
   output;
 id1="3333"; id2="3333"; id3="3333";
   output;
run;

data data2; set data1;
  keep id1 id2;
run;
  • KEEPステートメントにより、id1,id2のみ残る。(id3は捨てられる。)

続いてオプションによるKEEP。(個人的には、オプションで使う事はあまり無いと思います。)


/* オプション_1 */
data data1;
 id1="1111"; id2="1111"; id3="1111";
   output;
 id1="2222"; id2="2222"; id3="2222";
   output;
 id1="3333"; id2="3333"; id3="3333";
   output;
run;

data data2; set data1(keep=id1 id2);
  keep id1 id2;
run;
  • KEEPオプションにより、id1,id2のみ残る。(id3は捨てられる。)

/* オプション_2 */
data data1;
 id1="1111"; id2="1111"; id3="1111";
   output;
 id1="2222"; id2="2222"; id3="2222";
   output;
 id1="3333"; id2="3333"; id3="3333";
   output;
run;

data data2(keep=id1 id2); set data1;
  keep id1 id2;
run;
  • KEEPオプションにより、id1,id2のみ残る。(id3は捨てられる。)

/* オプション_3 */
data data1;
 id1="1111"; id2="1111"; id3="1111";
   output;
 id1="2222"; id2="2222"; id3="2222";
   output;
 id1="3333"; id2="3333"; id3="3333";
   output;
run;

data data2; set data1(keep=id1 id2);
  id4 = "3333";
run;
  • KEEPオプションにより、入力データのid1,id2のみ残る。(id3は捨てられる。)
  • KEEPの選択後、id4が与えられるので、id4が出力される。

/* オプション_4 */
data data1;
 id1="1111"; id2="1111"; id3="1111";
   output;
 id1="2222"; id2="2222"; id3="2222";
   output;
 id1="3333"; id2="3333"; id3="3333";
   output;
run;

data data2(keep=id1 id2); set data1;
  id4 = "3333";
run;
  • KEEPオプションにより、出力データのid1,id2のみ残る。(id3,id4は捨てられる。)
  • id4が与えられた後、KEEPによる選択が行われるため、id4は出てこない。

このようにオプションでkeepを使用すると、使用箇所によって挙動が変わるので、

特にオプションで使う理由が無ければ、ステートメントで使用した方が無難だと思います。

-KEEP, SAS

執筆者:


comment

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

関連記事

【SAS】%PUTステートメントは文字列をログに出力する。その1

今回は%PUTについて解説します。 /* %put */ %put CHAR; %putにより、文字列をログに出力できる。 /* %let */ %let CHAR = aaaa ; %put &am …

【SAS】OUTPUTとDELETEの「明示的な使い方」「暗黙的な使い方」

今回はOUTPUTとDELETEにスポットを当てていきたいと思います。 /* output, delete無し */ data data1; Id1=1111; Char1=”AAAA”; outpu …

【SAS】SUBSTR関数を使って右から文字列を切り取る方法について解説【LENGTHN】

今回はSUBSTR関数を使って右から文字列を切り取る方法について解説します。 (参考:【SAS】SUBSTR関数は文字列から指定した文字数分切り取る。 | ビジネスイッチ (how-to-busine …

【SAS】計算で求められた変数に対するIFとWHEREの振舞いの違い【SAS Base Programming対策1】

/* where id3 */ data data1; id1=1111; id2=1111; id3=1111; output; id1=2222; id2=2222; id3=2222; outp …

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

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