我有一些具有指定值的变量。
%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 相加(如果它们与值匹配)。例如,由于 joe 对于 a 和 b 的值为 1,因此 p1 将是 a_val 和 b_val 的和,即 50。对于 jim 和 jak,p1 的值将为零,因为它们没有值 1。类似地,对于 jak,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;
我在正确的轨道上吗?
谢谢!任何帮助表示赞赏。