全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1600 1
2016-12-19

需要解决的问题:
通过宏建一系列的表divorce_flag_1,divorce_flag_2,divorce_flag_3,divorce_flag_4。保证每个表中都有id,p1,p2,p3,p4五个变量。生成不包含p&n的p1~p4变量集该怎么写do循环代码呢?
【举个例子】要生成divorce_flag_2,我现在已有的表a.divorce_flag中已有id和a2(改名后为p2)两个变量,需要通过宏生成的新表需要有变量id,p2,以及其他三个变量p1,p3,p4,且p1=0,p3=0,p4=0。生成不包含p2的p1~p4变量集该怎么写do循环代码呢?

【代码如下】
%macro divorce_flag(n);
data a.divorce_flag_&n;
set a.divorce_flag(keep=id a&n rename=(a&n=p&n));
where p&n=1;
%do m=1 %to 4;
    %if m=&n %then %do;
        %goto endmacro;              /*m=n的时候就不生成p&m变量*/
    %end;
    %else %do;
        p&m=0;                        /*m!=n的时候才生成p&m变量*/
    %end;
%end;
run;
%mend;


【结果显示】
ERROR: 宏 DIVORCE_FLAG 至少包含一个 %GOTO 语句,但没有定义有效的标签。将不编译该宏。
ERROR: 将编译哑宏。


%divorce_flag(n); 结果中并不显示新生成的p变量

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-12-20 16:48:22
data divorce_flag;
input id a1 a2 a3 a4;
datalines;
1 1 2 4 5
3 2 3 7 8
5 3 1 0 9
6 4 2 3 4
9 5 8 3 5
;
run;
%macro divorce_flag(n);
data divorce_flag_&n;
set divorce_flag(keep=id a&n);
%do m=1 %to 4;
    %if &m=&n %then %do;
       rename  a&n=p&m;            
    %end;
    %else %do;
        p&m=0;                     
    %end;
%end;
run;
%mend;
%divorce_flag(2);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群