我试图通过do循环来获取此宏。看起来很简单,因为它没有用任何东西填充新字段。请任何帮助表示赞赏。数组似乎不起作用,因为我的数据全部都在列中。谢谢!
%macro labs;
data lab1;
set non1;
by record_id;
%do i=1 %to 25;
length lab_spec_type_&i $25.;
%if lab_spec_site&i = '2' %then lab_spec_type_&i = 'matser';
%else %if lab_spec_site&i = '1' %then lab_spec_type_&i = 'matbl';
%end;
%mend;
%labs;
答案 0 :(得分:1)
你应该在这里使用一个数组,除非你在工作安全之后再获得宏,否则你没有获得任何价值。虽然这可能适得其反。
data lab1;
set non1;
by record_id;
array labType(25) $ lab_spec_type_1-lab_spec_type_25;
array site(25) $ lab_spec_site1-lab_spec_site25;
do i=1 to 25;
if site(i) = '2' then
labType(i) = 'matser';
else if site(i) = '1' then
labType(i) = 'matbl';
end;
run;