私は、各従業員がマネージャーの地位に結び付けられている以下のデータセットを持っています。ここで、従業員のマネージャーの従業員 ID をマネージャー ポジションを使用して見つける必要があります。直属のマネージャーのポジションにアクティブな人がいない場合は、マネージャーのマネージャーのポジションを見つけて、アクティブな従業員がそのポジションに関連付けられていることを確認する必要があります。これは、ACTIVE マネージャーが見つかるまで続ける必要があります。
ID -> Employee ID
PSTN -> Employee Position code
MPSTN-> Manager Position code
STAT -> Employee Status (T - Term A - Active)
入力データセット:
data input;
input id pstn mpstn stat$;
datalines;
1 10 30 A
2 20 30 T
3 30 40 T
6 30 40 T
4 40 50 A
7 40 50 T
5 50 50 A
;
run;
期待される出力データセット:
ID MGR_ID
1 4
2 4
3 4
6 4
4 5
7 5
5 5
POINT関数で問題のRECURSIVEの性質を試しました。
次のレベルのアクティブマネージャーを検索する再帰部分を除いて、正常に機能しています。
data output ;
set input;
flag = 1;
do I = 1 to last while (flag=1);
set input(rename=(pstn=pstn1 stat=stat1 mpstn=mpstn1 id=id1)) nobs=last
point=I;
if mpstn = pstn1 and stat1 = 'A' then
do;
MGRID = id1;
I=1;
flag=0;
end;
else flag=1;
end;
run;
これで私を助けてください。