注意

今回はDataステップの応用を説明します。
そのため、下記を前提として説明致します。

  • 「output」を知っている。
  • if文を知っている。

上記前提については下記の記事にて説明しています。

初めに

今回はDataステップで使えるループ処理を説明します。
python等では「for文」が用意されていますが、SASでは「Doステートメント」というものが用意されています。
なので、「Doステートメント」について今回は説明します。

ループ処理(Do)の枠組み

ループ処理、つまり「Doステートメント」は下記の枠組みでコードを書くことができます。
「do」で始まり「end」で終えます。
「by」は省略可能であり、省略した場合はカウンタ変数は 1 ずつ増えます。
下記コードでのループ処理は次のような形になります。

  1. カウンタ変数 i を i = 1 で初期化
  2. i <= 10 ならば下記3.以降を順に実行。i > 10 ならばループ処理終了。
  3. [process]の処理を実行
  4. i に by値(2) を加える。※ i = i + [by値]
  5. 上記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;

[出力データセット]

imultiple_of_2multiple_of_3
123
246
369
4812
51015
2の倍数と3の倍数(out_data)

ループ処理(Do)を使用する際の注意点は以下の通りです。

  • カウンタ変数( i )も出力される。
  • 各ループにてオブザベーションを出力する際は、「output」を記述すること。(記述しないと、ループ処理後のオブザベーションのみが出力される。)

最後に

上記例の通り、ループ処理(Do)を用いると、(色々なデータ加工に活用できる点もありますが、)テストデータ作成も簡単に行うことができます。
ループ処理を活用する際も、「output」の活用が重要なので、「output」の振り返りもしておきましょう。

By clear

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