II. SASの使い方
1.SASの操作方法
0)パソコンの設定→1)データの準備→2)プログラムの準備→3)実行→4)結果をみる
という手順で操作する。
0)パソコンの設定
・ファイル名の表示
拡張子が見えた方が安全なので、拡張子を設定するように変更。
「マイコンピューター」→「表示」→「オプション」→「表示」で、「登録されているファイルの拡張子は表示しない」の右のチェックボックスをoff(空白)にしておく。
・ファイル名の入力
ファイル名(英数字)を入力するときには、「直接入力モード」にする。
(そうしないと、一見同じに見えても全角文字が入力されていたりする。→ファイルが見つかりませんエラーになる。)
1)データの準備
(1)演習用データを保存するディレクトリの作成
処理速度や容量の問題があるかも知れませんが、フロッピーディスクにデータを保存し、それを利用してもらいます。
自分のフロッピーをPCに入れる。
「マイコンピューター」を開き、自分のフロッピー(A:)を選ぶ。
「ファイル」→「新しいフォルダの作成」
「ensyu」と入力して、ディレクトリを作成する(直接入力モードにしておくことを忘れないように)。
(2)データファイルのコピー
前述のホームページの「ensdat1.xls」がこの授業の演習で使うデータ。これが「消費についてのアンケート」結果を入力したもの。
http://www.fbc.keio.ac.jp/~hamaoka/ENSYU/index.html
調査票、データ、変数名リストはすべてホームページからダウンロードできる。
ホームページからensdat1.xlsをダウンロードして見たもの(エクセルが必要)。
行方向にサンプル(回答者)、列方向に変数が並んでいる。調査票に対応している。
入力しやすさ、見やすさという観点から上記のように、設問の内容、変数名なども入力したが、SASではこれらの情報は読み込めない。
実際にSASに読み込ませるのは、データ部分のみ(セルC5:FT94の範囲)。
ホームページの「ensdat1.csv」を見て欲しい。データがコンマで区切られていることがわかる。
ensdat1.csvをA;ensyuの中に保存する
3)プログラムの準備
基本的には、次の手順で実行させる。
Program editorウインドウにプログラムを直接書き込むか、ファイルとして作成済みのプログラムを読み込み、実行させる。
(1)プログラムのSASへの読み込み
プログラムファイルがディスクに保存されている場合には、「ファイル」→「オープン」として、実行したいプログラムを選ぶ。個々では、上記ホームページの必要なプログラムを、SASのProgram editorウインドウにコピーする。
演習用データを読み込むためのプログラムensread1.sasをクリックする。
/**/で挟まれているのは、プログラムを見やすくするためのコメント文。実際のプログラムは短い。
(2)プログラムの修正と保存
これをSASのプログラムエディタ・ウインドウにコピーする。
Program editorウインドウにいることを確認。必要ならばプログラムを修正する。
練習のために、わざと間違えて修正してみる。次の二カ所。
このプログラムでは、ドライブが eに指定されているので、これをxに修正する。
LIBNAME ens "e:\ENSYU\";
INFILE 'e:\ENSYU\ensdat1.csv' LRECL=3000 delimiter=',';
「サブミット」すると、Program editorウインドウはクリアされる。
修正したプログラムが必要ならば、ファイルの保存を忘れないように。
ここでは、A:\ensyuにensread1.sasとして保存しておく。
Program editorウインドウから、「ファイル」→「保存」で保存できる。
3)プログラムの実行
Program editorウインドウにいること、ウインドウにプログラムが表示されていることを確認。
「ローカル」→「サブミット」で実行される(画面の人の走っているマークを押しても実行される)。
4)実行結果のみかた
・logウインドウ
SASシステムからのメッセージが出力される。
実行されたプログラムは黒字、sasからのメッセージのうち単なる報告は青、警告、エラーは赤字で出力される。
この場合、ドライブxがないといったエラーメッセージが出力されるはず。
・outputウインドウ
うまく行けば(エラーが出なければ)計算結果が出力される。
・Programe ditorウインドウ
クリアされている。
5)再実行の方法
Program editorウインドウにいることを確認。
「ファイル」→「読み込み」でA:\ensyuにensread1.sasを読み込む。
上記二カ所のドライブ指定をAにする。
再度、プログラムを保存する(「ファイル」→「保存」)。
プログラムを実行する。
→今度は結果が出力されるはず。
図表 Logウインドウへの出力
(注)連続して実行すると、各ウインドウには前の出力に続けて結果が出力される。
まめに「編集」「テキスト消去」を実行しましょう。
図表 SASでのデータの読み込み例(プログラム名=ensread1.sas)
1)プログラムの構成(要素)
○SASステートメント:sasに処理をさせるための命令文。
例 input データの読み込み
if条件文 then 実行文 →条件を満たしたときにだけ実行させる。
○SASデータセット
SAS独自のフォーマットで作成されるデータファイルのこと。次の二通りがある。
一時データセット:一時的につくられるデータセットでSASを終了させると消去される。
永久データセット:SASを終了させても永久に保存される。
データセット名は次のようになる。
ライブラリ名.データセット(aaaa.bbb)
ライブラリ名を物理的なディスクと対応させるのがLibnameコマンド。
この場合は、ensというライブラリ名を指定して、そのライブラリをAドライブの\ENSYU\というフォルダに対応させている。
LIBNAME ens "A:\ENSYU\";
→
○DATAステップ
SASデータセットの作成、編集(オブザベーションや変数の削除、データセットの結合など)を行う。
○PROCステップ
データを処理させる。
・このプログラムで使われているプロシジャ、コマンド
2)文法
・変数名
ファイル名、変数名、コマンドなどの、大文字、小文字は区別しない(unix版ではファイル名は区別する?)。
・変数の宣言
C言語のように使う変数の型をプログラムの最初に宣言しておく必要はない。
ただし、文字列変数の場合には、読み込みのときに、その変数が文字変数であることを指定しておく必要
がある。
例 xという数値変数を読み込む場合。
input x ;
例 xという文字列変数を読み込む場合。
input x $;
→xの後に「スペース$」を入れておく。
ただし、$が必要なのは読み込みのときだけ。
・一つの文はセミコロン「;」で区切る。
初心者は、ここでエラーを出ことが多いので要注意。
・一行に複数の文を書くこともできる。
・プロシジャ単位で実行され、次のプロシジャに移行するまで前のプロシジャは実行されない。
プログラムの文末にはrun; を必ず入れるようにしておく。
・「/* */」はコメント文であり、実行されない。
・入力データセットの指定
どのデータセットについて処理させるかdata=で指定することができる。指定しなければ、直近に作成されたデータセットを処理する(下の例はproc printの例だが、他のプロシジャでも同様)。
procで処理するデータセット名を指定しなければ、直近に作成されたデータセットを分析する。