※ データステップのMODIFYステートメントなど、特定の機能を用いるとDROP, KEEPステートメントが動作しないことがあるので注意。
DROPステートメント
指定した変数を出力データセットに「含めない」ようにする
KEEPステートメント
「指定した変数のみ」出力データセットに「含める」ようにする
💬
テクニック
過去にいくつかテクニックを紹介しています。
・ATTRIBとKEEPを使った基本コンボ
・変数名をいっきに指定する方法 [まとめ]
また、上の2つ目のリンク記事内にある「:(コロン)」を使ったよくやるテクニックを紹介。
やりたい事
「データステップ内で作った一時的な変数を最終的にまとめてDROPしたい」
こういった場合、まとめてDROPしたい変数の名前の先頭に 「tmp_」 とかつけておいて、「DROP tmp_: ;」 と書いてしまえば、最後に「tmp_○○」の変数をまとめて削除できちゃいます。
(たまにやっちゃうミスですが、既存の消したくない変数に「tmp_○○」というのがあったらそれも消えちゃうので気をつけてください)
例
上の例では先頭に「_」のつく変数をまとめて削除しています。
指定した変数を出力データセットに「含めない」ようにする
data DT2;
set SASHELP.CLASS; drop NAME AGE; run; |
💬
- 通常のステートメントはPDVという「一時的な処理スペース」で実行されますが、DROPステートメントは「一時的な処理スペース」の結果を「出力データセットへ書き込む時」に実行します
- つまり、最終的に適用されるイメージです。また適用されるタイミングが決まっているので、DROPステートメントを記述する位置は関係ありません(プログラムの先頭や最後に書いても挙動は変わらない)
「指定した変数のみ」出力データセットに「含める」ようにする
data DT1;
set SASHELP.CLASS; keep NAME AGE; run; |
💬
- DROPステートメントと同様、KEEPステートメントは記述する位置に関係なく、「出力データセットへ書き込む時」に実行します(詳細は上のDROPステートメントの説明を参照)
過去にいくつかテクニックを紹介しています。
・ATTRIBとKEEPを使った基本コンボ
・変数名をいっきに指定する方法 [まとめ]
また、上の2つ目のリンク記事内にある「:(コロン)」を使ったよくやるテクニックを紹介。
やりたい事
「データステップ内で作った一時的な変数を最終的にまとめてDROPしたい」
こういった場合、まとめてDROPしたい変数の名前の先頭に 「tmp_」 とかつけておいて、「DROP tmp_: ;」 と書いてしまえば、最後に「tmp_○○」の変数をまとめて削除できちゃいます。
(たまにやっちゃうミスですが、既存の消したくない変数に「tmp_○○」というのがあったらそれも消えちゃうので気をつけてください)
例
data DT3;
set SASHELP.CLASS; _A = 1; _B = 2; drop _: ; run; |
上の例では先頭に「_」のつく変数をまとめて削除しています。
0 件のコメント:
コメントを投稿