SASデータセットに関する情報(OBS数、変数の数等)を取得する
[OS]ALL
[リリース] 6.07以降
[キーワード] base, datastep, contents, dataset, observation, variable, count, informations, set, statement, nobs=, option, out=, macro
[質問]特定のSASデータセットのオブザベーション数や変数の数を、プログラム中で取得したいのですが、よい方法はありますか。
[回答]
いくつかの方法が考えられます。 proc contents data=sasuser.class out=contout; run; proc print data=contout; run;またマクロを利用すれば、上記で作成したSASデータセットから、オブザベーション数と 変数の数を取得するまでを自動的に行えます。 以下にその方法を示します。 [マクロ定義] %macro varcnt(data=,mvar=); %global &mvar; proc contents data=&data out=_tmpxx_ noprint; run; data _null_ ; set _tmpxx_ nobs=cnt; call symput("&mvar",left(put(cnt,8.))); stop; run; %mend; %macro obscnt(data=,mvar=); %global &mvar; data _null_; set &data nobs=cnt; call symput("&mvar",left(put(cnt,8.))); stop; run; %mend; [使用例] %varcnt(data=sasuser.class,mvar=test); %put &test; %obscnt(data=sasuser.class,mvar=test); %put &test;
|