始めに
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_id | student_name | sex | japanese | math | english | science | society |
---|---|---|---|---|---|---|---|
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 |
データ加工
次に作成したデータセットに対して、五教科の合計点(total)を新たな変数として作成してみましょう。「set result;」は、「データセットresultを入力とする」という設定になります。
[コード]
data result;
set result;
total = japanese
+ math
+ english
+ science
+ society;
run;
[出力データ]
student_id | student_name | sex | japanese | math | english | science | society | total |
---|---|---|---|---|---|---|---|---|
1 | tanaka | 0 | 50 | 60 | 70 | 80 | 90 | 350 |
2 | yoshida | 1 | 60 | 80 | 90 | 90 | 70 | 390 |
3 | shimada | 0 | 90 | 100 | 100 | 100 | 100 | 490 |
4 | nakamura | 1 | 90 | 60 | 80 | 80 | 70 | 380 |
5 | sasaki | 0 | 70 | 90 | 60 | 100 | 80 | 400 |
「Procステップ」とは
簡単にいうと、「一定の一連処理」ができるものです。
ソート処理や統計的検定等が簡単なコーディングでできるようになっています。
下記のような枠組みで書くことができます。
複雑な統計処理等が簡単に実装できるのが、SASの特徴の一つです。
今回は、比較的簡単な処理についてProcステップを使ってみましょう。
proc [proc_name] [options];
...
run;
「Procステップ」の例
ソート処理
上記で作成したデータセットに対して、合計点(total)で降順ソート(点数の高い順)してみましょう。
[コード]
proc sort data=result;
by descending total;
run;
[出力データ]
student_id | student_name | sex | japanese | math | english | science | society | total |
---|---|---|---|---|---|---|---|---|
3 | shimada | 0 | 90 | 100 | 100 | 100 | 100 | 490 |
5 | sasaki | 0 | 70 | 90 | 60 | 100 | 80 | 400 |
2 | yoshida | 1 | 60 | 80 | 90 | 90 | 70 | 390 |
4 | nakamura | 1 | 90 | 60 | 80 | 80 | 70 | 380 |
1 | tanaka | 0 | 50 | 60 | 70 | 80 | 90 | 350 |
最後に
今回は、DataステップとProcステップの概要を説明しました。
両ステップを使って様々データ加工・集計が行えます。
多くのSASを使っている現場では、”GUI操作で上記プログラムが作れる”SAS統計ツールが導入されてます。
しかし、GUI操作が可能とはいえ、柔軟に実装するには、やはりSAS言語の知見が必要です。
必要に応じて、SAS言語を学んでいきましょう。