2017年6月21日水曜日

【SAS入門】データセットの中身を表示する【PROC PRINT】




SASデータセットの中身を見るには、、

  • データセットを直接開いて見る
  • PRINTプロシジャ等でデータセットの中身を出力して見る

といった方法があります。
今回は、PRINTプロシジャを使った方法を紹介します。(沢山機能があるので、基本の部分のみ紹介)



例① 基本構文

proc print data=SASHELP.CLASS;
run;

「data=」に表示したいデータセット名を指定します。
今回は「SASHELP.CLASS」を表示対象としています。

ここからステートメントやオプション等を追加して、出力をカスタマイズしていきます。
以下で紹介する機能は、オプションや設定等の組み合わせで、機能しなかったり挙動が変わる場合がある点だけ注意です。



例② VARステートメント
proc print data=SASHELP.CLASS;
   var NAME SEX AGE;
run;

VARステートメントで表示したい変数を指定することができます。




例③ LABEL、NOOBSオプション
* オプションなし ;
proc print data=SASHELP.BASEBALL;
   var NAME TEAM;
run;



* オプションあり ;
proc print data=SASHELP.BASEBALL label noobs;
   var NAME TEAM;
run;

LABELオプション・・・
通常、「オプションなし」の例のように列ヘッダーには変数名が表示されますが、LABELオプションを指定すると、変数ラベルを表示できます。

NOOBS・・・
通常、「オプションなし」の例のように一番左側に「OBS」という列が表示されますが、NOOBSオプションを指定すると、この列を非表示にできます。




例④ WHEREステートメント
proc print data=SASHELP.CLASS ;
  where AGE = 13;
run;

WHEREステートメントでオブザベーションの抽出条件を指定できます。
(上の例では、AGE=13のオブザベーションのみを表示しています)




例⑤ OBS=データセットオプション
proc print data=SASHELP.CLASS(obs=3);
run;

OBS=データセットオプションで、処理を停止するタイミングを指定できます。
(上の例では、3オブザベーションまでで処理を停止しています)

データセット名の後ろにカッコで囲んで指定します。

ちなみに、入門の範疇を少し超えますが、以下記事の通り、他の機能と組み合わせて使用する際は、その挙動にも注意です。

FIRSTOBS=, OBS=, WHERE を組み合わせたときの挙動



注意点

出力の設定がテキスト形式(ODS LISTING)になっている場合、変数に格納されている文字が長いと、文字切れを起こして途中までしか出力されません(ログにWARNINGが出ます)



PRINTプロシジャ利用時のヒント

PRINTプロシジャには不向きなデータがあります。

例えば、変数の数が多かったり、オブザベーション数が多い場合、
表示されたものが縦や横にながく見づらかったり、そもそもプロシジャの実行にめちゃくちゃ時間が掛かります。

素直にデータセット直接開いて中身見た方が早いです。

ただ、そういった場合でも、VAR、WHERE、OBS=などを組み合わせて、表示する変数やオブザベーションを絞るなどすれば、ある程度見やすくなります。



0 件のコメント:

コメントを投稿