SASデータセットを削除する方法

データセットを削除します。オブザベーションを消すのではなくそのものを消す方法です。

data DS1;
 X=1;
run;

今、WORKにDS1というデータセットがあるとします。


【方法1】
proc datasets lib=work;
 delete DS1;
run;
quit;

DATASETSプロシジャのdeleteステートメントでデータセットを指定します。


proc datasets lib=work kill;
 run;
quit;

ライブラリの中を全部消したい場合はkillです。

proc datasets lib=work;
 save DS1;
 run;
quit;

save だとそのデータセットだけ残します。

【方法2】
proc delete data=DS1;
run;

どなたかがブログか論文で紹介されていたと思うのですがdeleteプロシジャというのも
使えます。

【方法3】
proc sql;
 drop table DS1;
quit;

sqlプロシジャのdrop tableでも消せます。どうしてもSASでdropがでてくると変数を落とす
イメージが強いですが。

【方法4】
DATA _Null_;
length DSFILE $20.;
 rc = filename(DSFILE,pathname("WORK")||"\"||"DS1"||".sas7bdat");
 rc = fdelete(DSFILE);
run;

これ好きです。粗暴なコードで素敵です。実戦で使うのは微妙ですが。
ようはSASデータセットそのものをファイルとして
削除してしまおうという発想です。pathname関数でライブラリの実体パスを取得できます。
それにデータセット名と拡張子を繋げてfdeleteで削除します。
消してもエクスプローラーが更新されていないと残像のようにデータセットが表示されるのですが
実際ダブルクリックすると「すでにこのデータセットは存在しません」みたいなかっこいい
メッセージがでて、なくなります。
自分が死んでいることに気付いていない幽霊のようで神秘的です。




0 件のコメント:

コメントを投稿