始めに

SASプログラミングにて使用される処理として、DataステップとProcステップが存在します。
今回はそれら2つの概要について説明していきます。

そもそも「SAS」とは

簡単にいうと、「SAS Institute社の統計ツール及びその言語」です。
機械学習や統計に関するツールを開発している会社であり、そのツールで使用される独自言語も一般に「SAS」、「SAS言語」と呼ばれています。
データサイエンス関連で用いられる言語として、pythonやRがありますが、「SAS」はそれらと同じ程度に使用されているイメージです。

「Dataステップ」とは

簡単にいうと、「データ加工の基本的な処理」ができるものです。
下記のような枠組みでコードを書くことができます。
データや変数の作成、加工ができます。
それでは、実際にどのようにコーディングされ、どのようなデータが出力されるのか見てみましょう。

data table_2;
set table_1;
x = ...
y = ...
run;

「Dataステップ」の例

データ作成

まず初めにデータを作ってみましょう。
今回は、学生の五教科テスト結果を作ります。
簡単にコードの説明をすると、

  • data result:データセット(テーブル)名を「result」と設定する
  • infile:記載データ(cards)の読み取り方を設定
  • input:変数名と変数型(数値/文字列)を設定
  • cards:データ値を設定
  • run:Dataステップの最後に記述する、言わば決まり文句。

[コード]

data result;
infile datalines delimiter=',';
input student_id $
    student_name $
    sex /*男性:1 , 女性:0*/
    japanese 
    math 
    english 
    science 
    society 
    ;
cards;
1 , tanaka , 0 , 50 , 60 , 70 , 80 , 90
2 , yoshida , 1 , 60 , 80 , 90 , 90 , 70
3 , shimada , 0 , 90 , 100 , 100 , 100 , 100
4 , nakamura , 1 , 90 , 60 , 80 , 80 , 70
5 , sasaki , 0 , 70 , 90 , 60 , 100 , 80
;
run;

[出力データ]

student_idstudent_namesexjapanesemathenglishsciencesociety
1tanaka05060708090
2yoshida16080909070
3shimada090100100100100
4nakamura19060808070
5sasaki070906010080
テスト結果(work.result)

データ加工

次に作成したデータセットに対して、五教科の合計点(total)を新たな変数として作成してみましょう。「set result;」は、「データセットresultを入力とする」という設定になります。

[コード]

data result;
set result;
total = japanese
        + math
        + english
        + science
        + society;
run;

[出力データ]

student_idstudent_namesexjapanesemathenglishsciencesocietytotal
1tanaka05060708090350
2yoshida16080909070390
3shimada090100100100100490
4nakamura19060808070380
5sasaki070906010080400
テスト結果(work.result)

「Procステップ」とは

簡単にいうと、「一定の一連処理」ができるものです。
ソート処理や統計的検定等が簡単なコーディングでできるようになっています。
下記のような枠組みで書くことができます。
複雑な統計処理等が簡単に実装できるのが、SASの特徴の一つです。
今回は、比較的簡単な処理についてProcステップを使ってみましょう。

proc [proc_name] [options];
...
run;

「Procステップ」の例

ソート処理

上記で作成したデータセットに対して、合計点(total)で降順ソート(点数の高い順)してみましょう。

[コード]

proc sort data=result;
    by descending total;
run;

[出力データ]

student_idstudent_namesexjapanesemathenglishsciencesocietytotal
3shimada090100100100100490
5sasaki070906010080400
2yoshida16080909070390
4nakamura19060808070380
1tanaka05060708090350
テスト結果(work.result)

最後に

今回は、DataステップとProcステップの概要を説明しました。
両ステップを使って様々データ加工・集計が行えます。
多くのSASを使っている現場では、”GUI操作で上記プログラムが作れる”SAS統計ツールが導入されてます。
しかし、GUI操作が可能とはいえ、柔軟に実装するには、やはりSAS言語の知見が必要です。
必要に応じて、SAS言語を学んでいきましょう。

By clear

データエンジニア・機械学習・分析等を主とし、Webアプリ開発も行っているフリーランスです。