0.学習背景
新たな現場で、SASを触る機会がありそうだったので、
実際に学習してみようということで
1.SASのインターフェースの違い
SASは対話的にコードを記述してサブミットするために使用できるいくつかのプログラミングインターフェースがあります。
SAS studio:
サーバー上のSASに接続するWebベースのインターフェース
SAS Enterprise Guide
SAS windowing environment:
ローカルサーバー・リモートサーバー上のSASにアクセスして実行するクライアントアプリケーション
対話型ということで、
Pythonを使ってデータ分析している方には聞き馴染みがある
Jupyter Notebookなどのアプリケーションで
コードを記述してサブミットも可能ではありますが、
一部のSASが提供するプログラミングツールの一部にはアクセスができないそう
SAS studioおよび Enterprise Guideのプログラムエディタは、SASコードに対して高機能
コード補完・フォーマット・構文の色付け
などの機能が含まれているため、
プログラミングがとても簡単になる。
SASプログラミングの構造
SASプログラムは、一連のステップで構成されている。
各ステップは、特定のタスクを実行します。
SASプログラミングには大きく2つのステップで構成されています。
1つ目は、DATA stepです
2つ目は、PROC stepです
SASプログラムには、実行するタスクに応じて、
DATAステップとPROCステップの任意の組み合わせを含めることができます。
ここで、一連のSASプログラムを記述します。
data myclass;
set sashelp.class;
heightcm=height*2.54;
run;
proc print data=myclass;
run;
proc means data=myclass;
var age heightcm;
run;
ほとんどのステップは、RUNステートメントで終わり
いくつかのPROCステップは、
QUITステートメントで終わります。
ここでのQUITステートメントの説明はまだありませんでした。
もし、RUNステートメントを記述しない場合、
次のDATA・PROCステートメントの開始が、終了を示します。
つまり記述しなくても、RUNステートメントは実行されるということです。
DATAステップ
入力ソースからデータを読みとり、それを処理して、
SASテーブルを作成します。
行のフィルタリング
新しい列の計算・テーブルの結合
そのほかのデータ操作も実行が可能
上のステップでは、heightcmという列をheight列を参照して作成しています
PROCステップ
PROCステップは、あらかじめ
定義された特定の方法でSASテーブルを処理します。
SASには、レポートやグラフを生成したり、
データを管理したり、複雑な統計解析を実行したりする多数のプロシージャがあります。
proc内の meanステートメントには、要約統計量を算出したりすることが可能です
グローバルステートメント
DATAおよび、PROCステップに加えて、SASプログラムには、
TITLE,OPTIONS,LIBNAMEステートメントなどのグローバルステートメントを含めることができる。
これらのグローバルステートメントは、DATA・PROCステップの外にある可能性があり、
グローバルステートメントの後に、RUNステートメントは必要ないとのこと。
コメントアウト
コードを先に見てみます。
/* Search Age<13 */
data under13;
set sashelp.class;
where Age<13;
*drop Height Weight;
セミコロンで終了する単一のステートメントをコメント化するには、ステートメントの先頭に
アスタリスクを追加する必要があるそうです。
ステートメント外のコメントアウトは上記のように行います。
3.まとめ(復習)
これらで何が行われているかを確認します。
data mycars;
set sashelp.cars;
AvgMPG=mean(mpg_city,mpg_highway);
run;
PROC print data=mycars;
var make model type avgmpg;
*where AvgMPG >35;
run;
/* PROC means data=mycars mean min max maxdec=1; */
/* var avgmpg; */
/* class type; */
/* RUN; */
これでは、mpg_city,mpg_highwayという列の平均値を出して、新たな列としています。
テーブ出力する際に、列選択(射影)させています。
where AvgMPGはあえて使わずに、コメントアウトをしています。
下のステートメントでは、統計量を出しています。
以上です。また今度もSASの学習アウトプットをしていきます。