2016年12月6日火曜日

次のオブザベーションの値を持ってくる話

月一更新に落ち着いてきましたね。

次のオブザベーションの値を持ってくる方法にはいくつかあると思います。

元のデータと2オブザベーション目から読み込んだデータをマージしたりとか
hashで読みこんだりとかの方法が考えられます。
単純に次のレコードを持ってくるならsetステートメントのpointオプションを使う手もあります
グループ内での次のレコードを持ってくる、とかでしたらhashで読み込むのがよさげですが。

data hoge;
    a = 1; b = 6.0 ; output;
    a = 2; b = 3.0 ; output;
    a = 3; b = 4.0 ; output;
    a = 4; b = 2.0 ; output;
    a = 5; b = 5.0 ; output;
    a = 6; b = 1.0 ; output;
run;



data hoge2;
    set hoge end  = _last;
    _vnext = _n_ + 1;

    if _last = 0 then set hoge( keep = a rename = (a = next_a) ) point = _vnext;
        else call missing(next_a);                                              *-最終obsは次のレコードを持たない;

run;











これで変数aの次のオブザベーションの値を持った変数next_aが出来上がります。
今回は画像あげるテストも兼ねてたんですが大丈夫そうですね

0 件のコメント:

コメントを投稿