1
我有一些變量具有指定的值。執行循環以有條件地添加值SAS
%let a_val=20;
%let b_val=30;
%let c_val=40;
我也有一個看起來像這樣的數據集。
data have;
input name $ a b c;
cards;
joe 1 1 2
jim 3 2 3
jak 5 3 5
;
run;
現在,我需要創建變量P1-P5,如果他們匹配值加起來a_vals,b_vals和c_vals。例如,因爲對於a和b,jo的值爲1,所以p1將是a_val和b_val的總和,即50。對於jim和jak,p1的值都將爲零,因爲它們沒有值1。 ,j2的p2爲0,jim的爲30,joe爲40。
完成的數據集是這樣
>name p1 p2 p3 p4 p5
>joe 50 40 0 0 0
>jim 0 30 40 0 0
>jak 0 0 30 0 60
我試着像這樣do循環做到這一點:
data attempt;
set have;
do i=1 to 5;
p&i=0;
if a=i then p&i=p&i+a_val;
if b=i then p&i=p&i+b_val;
if c=i then p&i=p&i+c_val;
end;
run;
我在正確的軌道上?
謝謝!任何幫助讚賞。
謝謝你,喬。這就說得通了。我實際上有三個以上的變量,所以我可以按照你的建議看看symget。與此同時,這絕對有助於我走出困境。再次感謝。 – pyll
Symget附加回答。 – Joe