データに欠測が無かったら、以下を実行するとグラフが出ますね。
(いまどきgplotかよとの指摘は今はご勘弁を…)
data hoge;
a = 1; Y = 2; output;
a = 2; Y = 3; output;
a = 3; Y = 4; output;
a = 4; Y = 5; output;
a = 5; Y = 3; output;
a = 6; Y = 7; output;
a = 7; Y = 5; output;
a = 8; Y = 8; output;
a = 9; Y = 4; output;
run;
proc gplot data = hoge;
plot Y * A ;
symbol1 c = black V = dot I = join;
run;
もしデータに欠測があった場合、普通にやるとそこは線でつながります。
data hoge;
a = 1; Y = 2; output;
a = 2; Y = 3; output;
a = 3; Y = 4; output;
a = 4; Y = 5; output;
a = 5; Y = 3; output;
a = 6; Y = .; output;
a = 7; Y = 5; output;
a = 8; Y = 8; output;
a = 9; Y = 4; output;
run;
proc gplot data = hoge;
plot Y * A ;
symbol1 c = black V = dot I = join;
run;
欠測のところで線を区切って欲しいときは、skipmissオプションを指定します
data hoge;
a = 1; Y = 2; output;
a = 2; Y = 3; output;
a = 3; Y = 4; output;
a = 4; Y = 5; output;
a = 5; Y = 3; output;
a = 6; Y = .; output;
a = 7; Y = 5; output;
a = 8; Y = 8; output;
a = 9; Y = 4; output;
run;
proc gplot data = hoge;
plot Y * A /skipmiss;
symbol1 c = black V = dot I = join;
run;
2016年12月13日火曜日
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が出来上がります。
今回は画像あげるテストも兼ねてたんですが大丈夫そうですね
次のオブザベーションの値を持ってくる方法にはいくつかあると思います。
元のデータと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が出来上がります。
今回は画像あげるテストも兼ねてたんですが大丈夫そうですね
登録:
投稿 (Atom)