スーパーエンジニア100年目!

エンジニアの働き方とか生き様とか。毎日を頑張って生きる。

解析用プロシジャについてのメモ

あくまで自分用メモですが。

解析用プロシジャの一覧です。

解析用プロシジャに関しては、こういう分析機能がある、という一覧は必要だと感じました。
【基本統計】
CORR
  様々な相関係数の計算
FREQ
  度数表・集計表の作成、および、集計データに対する解析
MEAN、SUMMARY
  基本統計量の算出
【データの順位付けと標準化】
rank 
順位付け


私の業務で使ってるのはこれくらいかな。都度追加していきます。




 

データセット で、特定の変数を残す OR 消す

SQLだとSELECTで抽出したりするんですが、SASDATAセットだと、こう書きます。

KEEPステートメント

data test;
   set SASHELP.aacomp;
   keep locale key;
run;

いらない変数を消した状態でTESTテーブルを作成できます。
DROPステートメント

data test;
   set SASHELP.aacomp;
   drop locale key;
run;

SASの基本

SASプログラムには以下の構成で行う。

DATAステップ
 新しいデータセットの作成
 データ加工・抽出・演算

②PROCステップ
 統計処理
 グラフレポートの作成

①外部ファイルをSAデータセットに変換したり、すでに作ってあるデータセットを、加工したりして、新しいデータセットを作る。

②PROCは、処理内容によって、用意されているプロシジャを、PROCのあとに設置することで、利用できる便利なもの。

DATAステップ

DATA TEST;/*今回作るデータセット*/
 SET sashelp.aacomp;  /* 用意されているデータセット*/
run;

PROCステップ

 proc contents VARNUM /*contentsプロシジャは、変数情報を出力する。*/
   data = sashelp.aacomp; /*データセットの変数情報を見たいものをセット。*/ 
 run;

【SAS】SASでループ。マクロ版と通常版の比較。

たまに書き方を混乱する人のために。

/*普通のループ*/
data test;
  do i = 1 to 10;
    put i;
  end;
run;
/*マクロのaaaの中でループをするときに、置き換えを行う。*/
%macro aaa(no = 10);
  %do i=1 %to &no.;
   %put &i.;
  %end;
  
%mend;
%aaa;

こんな書き方もあるよ。

%macro test1010(A3);
  proc print data=sashelp.&A3. ;
  run;
%mend;

/*指定のライブラリ名を引数として実行*/
%test1010(A3=aacomp);

【SAS】マクロ入門 置き換え

SASを書く上で、絶対に覚えなければいけないこと。
それはマクロ変数です。
SASマクロは、反復して書かなければならないステートメントを簡略化したり、
ステートメント中のパラメータを可変にして、複数の処理を使えるようにするなどの機能を持ちます。
それをメモがてら書いていきます。

example

%LET TEST = sashelp.aacomp;     /* マクロ変数を定義  */

 PROC  print data = &test. ;
 RUN;

%LETで、TESTというマクロ変数を作成し、それに値を入れる。

%let TEST = SASHELP.aacomp;

定義したら、これをコード上で使う場合、 &TEST. というふうにくっつける。

これでマクロ変数がプログラム上で使えるようになる。

PROC  print data = &test. ;

これで、マクロ変数を定義して、指定のところに出力できるということがわかったが、次に、きちんと、定義したマクロ変数の中身を確認する癖をつけよう。

%PUT &マクロ変数名; 
 

これによって、マクロ変数に入ってる値を確認できる。
これはプログラムを組んだ直後、かならずテストするようにくせにしよう。


【doステートメントの指定例】

do i=1 to 10; ループの度にiを1ずつ増やし、10回処理を繰り返す
do i=1 to n; n回処理を繰り返す
do i=2 to 10 by 2; iの初期値は2、ループの度に2ずつ増やす
do j=10 to 2 by -2; jの初期値は10、ループの度に2ずつ減らすdo n=1,2,4,8,16; ループの度にnの値を1,2,4,8,16の順に変更する

【SAS】マクロ変数入門2 マクロの登録と実行について

データセットあるいは、変数を変えて、何度か同じ処理を実行したい場合、マクロを使うと便利。
これは絶対業務で使うので覚えとよい。

%macro マクロ名;

  ー処理プログラムー

%mend マクロ名;   /* マクロを登録完了  */

%マクロ名;  /* これで、登録したマクロを実行する。  */

%MACRO ~ %MEND; の中に、マクロとして登録したいプログラムを書く。

最後に%マクロ名;で、実行することができる。

もう少し丁寧に説明。↓

/* マクロ登録 */
%macro TEST ;
   proc print data=sashelp.aacomp;
  run;
%mend TEST;

PRINTプロシジャでデータセットSASHELP.AACOMPを出力するマクロTESTを登録。
この段階ではまだ実行されない。
↓これによって実行ができる。

/* 登録したマクロを実行*/
%TEST;

最後に。

マクロ登録したプログラムの中で、データセットなどをマクロ変数化し、使うことができる。

/* マクロ登録*/
%macro test;
  proc print data=&AA;
 run;
/*マクロ変数に代入*/
%let AA = sashelp.aacomp;

/* マクロ実行 */
%mend test;


これらは業務で頻繁に使うので覚えておく。

【SAS】 %DO ループ メモ

マクロ変数名を指定するか、またはマクロ変数名を生成するテキスト式を指定する。
 

DATA TEST;
 
 %DO   変数 = 1(開始)  %to  5(終了) ;

   繰り返す処理プログラム;

 %end;
RUN;

i=1 %to 5 :
 反復%DOステートメントと%ENDステートメント間にある、
 マクロの部分を処理する回数を制御する整数を指定するか、そのような整数を生成するマクロ式を指定する。
 i=1によって、i変数には1が代入されていて、ループを繰り返すたびに変数に加算されていき、5でループを終了する。

【example】

data TEST;
   do i = 1 to 5;
       put i;
   end;
run;

出力ログ
1
2
3
4
5