楼主: 过眼云烟83
1445 1

宏里面生成不包含p&n的p1~p4变量集该怎么写do循环代码 [推广有奖]

  • 0关注
  • 0粉丝

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0.0001
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
162 点
帖子
14
精华
0
在线时间
33 小时
注册时间
2012-12-10
最后登录
2020-2-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

需要解决的问题:
通过宏建一系列的表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变量

二维码

扫码加我 拉你入群

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

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

关键词:do循环 Divorce rename Macro Error where 宏建

沙发
lovexialulu 发表于 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);

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 07:19