SAS做循环宏

时间:2017-06-30 14:55:17

标签: macros sas do-loops

我试图通过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;

1 个答案:

答案 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;