注意
今回はDataステップの応用を説明します。
そのため、下記を前提として説明致します。
- 「output」を知っている。
- if文を知っている。
上記前提については下記の記事にて説明しています。
初めに
今回はDataステップで使えるループ処理を説明します。
python等では「for文」が用意されていますが、SASでは「Doステートメント」というものが用意されています。
なので、「Doステートメント」について今回は説明します。
ループ処理(Do)の枠組み
ループ処理、つまり「Doステートメント」は下記の枠組みでコードを書くことができます。
「do」で始まり「end」で終えます。
「by」は省略可能であり、省略した場合はカウンタ変数は 1 ずつ増えます。
下記コードでのループ処理は次のような形になります。
- カウンタ変数 i を i = 1 で初期化
- i <= 10 ならば下記3.以降を順に実行。i > 10 ならばループ処理終了。
- [process]の処理を実行
- i に by値(2) を加える。※ i = i + [by値]
- 上記2.に戻る
data out_data;
do i=1 to 10 by 2;
[process]
end;
run;
ループ処理(Do)の例
今回は、ループ処理を用いて、データセットの作成を行ってみます。
“5オブザベーション分の2の倍数と3の倍数“を作成してみましょう。
[コード]
data out_data;
do i=1 to 5;
multiple_of_2 = 2 * i;
multiple_of_3 = 3 * i;
output;
end;
run;
[出力データセット]
i | multiple_of_2 | multiple_of_3 |
---|---|---|
1 | 2 | 3 |
2 | 4 | 6 |
3 | 6 | 9 |
4 | 8 | 12 |
5 | 10 | 15 |
ループ処理(Do)を使用する際の注意点は以下の通りです。
- カウンタ変数( i )も出力される。
- 各ループにてオブザベーションを出力する際は、「output」を記述すること。(記述しないと、ループ処理後のオブザベーションのみが出力される。)
最後に
上記例の通り、ループ処理(Do)を用いると、(色々なデータ加工に活用できる点もありますが、)テストデータ作成も簡単に行うことができます。
ループ処理を活用する際も、「output」の活用が重要なので、「output」の振り返りもしておきましょう。