Рассматривайте этот дополнительный ряд как отдельный набор данных. Давайте сделаем это в несколько шагов, чтобы прояснить ситуацию.
data weights;
set have;
where emp_id='weight';
rename test1-test4 = weight1-weight4 ;
keep test1-test4 ;
run;
data want ;
if _n_=1 then set weights;
set have;
array t test1-test4;
array w weight1-weight4;
if emp_id = 'weight' then delete;
do index=1 to dim(t);
t[index]=t[index]*w[index];
end;
drop weight1-weight4;
run;
Если вы хотите испортить результаты, сохраняя наблюдение за весом, вы можете изменить IF THEN logi c так, чтобы значения T [ *] обновляются только тогда, когда наблюдение представляет собой реальные данные о сотруднике, но наблюдение за весом не удаляется.
if emp_id ne 'weight' then do index=1 to dim(t);
t[index]=t[index]*w[index];
end;
Вы можете сделать это, не создавая отдельный набор данных, если хотите, но не уверены, что это действительно помогает.