データセットの構造(ディスクリプタ部)のみコピーした空の新規データセットを作成する

data Q1;
attrib
X label='Xのラベル' length=$100.
Y label='Yのラベル' length=8. format=yymmdds10.
;
X='あかさたな';Y=999;output;
run;





といったデータセットがあるとします。

そのデータセットの定義情報を取得するcontentsプロシジャにかけてみると
アウトプットは以下の通りです。


変数と属性の情報コピーし、かつデータ部は空の新規データセットを作成したい、つまりこのデータセットの型だけとって中身はいらない的な場合にどうするかです。

【解法1】
data A1;
 set Q1;
 stop;
run;

setステートメントで読み込むんだけど、速攻stopステートメントをうつことによって
何も処理させる暇をあたえず作成終了です。
読み込んでから、消したり、抽出が絶対空集合になるような条件でwhereかけてもいいですが
stopが一番わかりやすいです。
stopというとpointによるダイレクトアクセスでファイル終端を見つけられない状態の回避につかう
イメージが強いですが、こんな風にもつかえます。


このようにオブザベーション数が0以外は全く同一のデータセットです。

【解法2】
proc sql;
 create table A2 like Q1;
quit;

SQLでもかなりシンプルな書き方で作成可能です。
create table 新規データセット名 like コピー元;
で構造のみコピーしてデータセットが作成できます。


0 件のコメント:

コメントを投稿