その他

* 1 ******************************** ;
 「_N_」という変数は、dataステップ内でのデータセットのオブザベーション処理回数を意味する。

 dataステップ中にsetステートメントを書いた後で(指定したデータセットは1オブザベーションとして)、
outputステートメントを2行書いていたら、2オブザベーションだが「_N_」値はいずれも「1」になる。

* 2 ******************************** ;
 あるデータセットの最終OBSだけ残したいのなら、endオプションでいける。

data DS2 ;
set DS1 end = eof ;
if eof ;
run ;

 「end」は変えると「NOBS」のように他の意味になるものもあるので、SASマニュアルを参照。

* 3 ******************************** ;
 この前知ったことだが、ボタン操作のみでSASデータセットをCSV形式にすることができる。
 V6では「書出し」を使うと簡単にできる。V8ではちょっと変わるはずだが、基本は変わらないはず。
 ↓
 注意点としては、CSVファイルをそのままEXCELで開こうとした時、
1列目の変数名が「ID」となっているとうまく開かないことだ(2000まで97と2000の場合ではSYLKファイルと認識される…)。
 詳細は不明だが、「ID」という変数名さえつけなければ特に問題はないだろう。

* 4 ******************************** ;
 IFステートメントと異なり、WHEREステートメントは
複数行に書いたとしても最後の行に記述した内容しか有効にならないが、
WHEREステートメントが使える場合は、メモリの使用減少や処理速度の向上など、
IFステートメントを使うよりもメリットが大きい。
 但しWHERE文は1つのステップで複数書けないとか、そのステップで作成した変数には使えないなど
IFと比べると使用条件に制限がかかる。

* 5 ******************************** ;
(その他、検索語句で出てきた質問から)
文字列を左右逆並びにする関数にはREVERSEがある。
単純にREVERSE()でいけたはず。

* 6 ******************************** ;
%PUT _user_ ;

とすると、ユーザが定義したマクロ変数の一覧を表示することができる。

* 7 ******************************** ;
バージョンによって機能の差はあるが、ODS機能を使うことでRTFに出力したり、
統計プロシジャを実行した後で必要な部分だけSASデータセットを出力することができる。
例えば、RTFに出力するのは次の通り。

ods rtf = "(RTFのファイルパス)" ;
proc print data = sashelp.class ;
run ;
ods rtf close ;

特に、9.2ではODS GRAPHICSで統計プロシジャの結果を出力することができるので概要を把握するには便利。

(20FEB2011追記)
上記の例ではnoprintオプションは使えない。

* 8 ******************************** ;
ods listing close ;
 〜(中略)〜 ;
ods listing ;

とすると、OUTPUTウィンドウに中略部分の出力が出ない(V9で確認したが、V8以降該当すると思われる)。
但し結果タブの中にゴミが残るので、気になる場合はods resultsで挟む必要がある。


20FEB2011 update.