inオプションは1データセット1回しか使えないっぽい話

今、以下の二つのデータセットがあって

data Q1;
X=1;
run;





data Q2;
X=2;
run;






上の2つから下のデータセットを作る必要がありました








これはまず、Q1のオブザベーションを2倍にコピーして、
最初の値にだけ5を加える。
それをQ2に対しても行う。
両方を縦に結合して、Q1由来の場合はYの値を1、Q2由来の場合はYを2としたことで
作成できます。

僕はまず、ぱっと
data A0;
 set Q1(in=in1 in=ina)
     Q1(in=ina)
     Q2(in=in1 in=inb)
     Q2(in=inb)
;

if in1 then X=X+5;
if ina then Y=1;
if inb then Y=2;

run;

というコードが浮かびました。ただ、書いた瞬間に、あ~これは通らなさそうだなぁという感触が
ありました。

案の定、結果は









となりました。つまりin=in1が効いてないわけです。
ということはすなわち、in=は複数指定できないというわけです。

一応(in=in1 ina) とか(in=in1,ina)とか、記述法を思いつく限り試してみましたが、やっぱり無理でした。
in=が複数指定できるとコードの自由度爆発だから、いつかできるようにならないかな、、、。


まあ、結局、このケースの場合はinで複数指定できない分
indsname=オプションで代用することで実現できましたが、データセット名がカギになる
ケースしか使えんし、イマイチです。

data A1;
 set Q1(in=in1)
     Q1
     Q2(in=in1)
     Q2
indsname=NAME;
;

if in1 then X=X+5;
if NAME='WORK.Q1' then Y=1;
if NAME='WORK.Q2' then Y=2;

run;





0 件のコメント:

コメントを投稿