LAG関数は「nオブザベーション前の値を取得したい」という場合に役立ちます。
ただし、よくある落とし穴もあるので、最後まで(リンクページも含めて)読んで仕組みを理解したほうが安全です。
簡単な例で見ていきましょう。
*** サンプルデータ作成 ; data DT1; input A; cards; 20 30 10 40 ; data OUT1; set DT1; B = lag(A); C = lag2(A); D = lag3(A); run;
|
何が起こっているのか、イメージで説明したいと思います。
(自分なりの解釈になっている可能性があるかもしれませんので、あしからず・・)
今回のサンプルプログラムの「C = LAG2( A )」の時の処理のイメージです。LAG関数によって内部では「キュー」と呼ばれる仕組みを利用しています。
- 上の例は、ラーメン屋にできた行列みたい。
- ラーメン屋の行列=「キュー」
- 行列に並ぶ人=「変数A」
- ラーメン食べれた人=「変数C」
- 最初のn杯は店員の味見用に作ったラーメンでお客さんには出さないやつ。
- 最後に並んだ何名かはスープ切れで食べれなかった、、みたいな
- 「LAG1」の場合だけ「LAG」と書いてもOK
- 「IFステートメント」と併用すると想定外の結果になる場合あり。以下を参照下さい。
0 件のコメント:
コメントを投稿