全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1799 4
2012-10-27
悬赏 80 个论坛币 已解决
请问各位老师,我想用SAS宏生成批量的文本,请问应该什么写呢?

例如,我想生成如下效果:

复制代码


代码段中,只有两段文本,我想做个宏产生大量的这样的语句;我想做成的效果大概如下:

%macro creat(nam,num);

%do i=1 %to #   //用一个循环产生大量的文本
abc&i.nam
  AFTER ENTRY
    IF abc&i.nam=. THEN
      GOTO efg
    ENDIF
  END
END

(space)
%end;

%mend;

意思就是这样,请各位老师给予帮助,非常感谢!!!

最佳答案

ziyenano 查看完整内容

%macro creat(num); %do i=1 %to # %if &i
二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-27 22:21:48
%macro creat(num);
%do i=1 %to #
%if &i<10 %then %do;
%put
abc0&i.nam
  AFTER ENTRY
    IF abc0&i.nam=. THEN
      GOTO efg
    ENDIF
  END
END

(space);
%end;
%else %do;
%put
abc&i.nam
  AFTER ENTRY
    IF abc&i.nam=. THEN
      GOTO efg
    ENDIF
  END
END

(space);
%end;
%end;
%mend;

%creat(10);
二维码

扫码加我 拉你入群

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

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

2012-10-27 22:41:23
data ex;
input text:$200.;
cards;
run;

%macro creat(num);
proc sql;
%do i=1 %to &num;
%if &i<10 %then %do;
insert into ex  values
("abc0&i.nam
  AFTER ENTRY
    IF abc0&i.nam=. THEN
      GOTO efg
    ENDIF
  END
END

(space)");
%end;
%else %do;
insert into ex  values
("abc&i.nam
  AFTER ENTRY
    IF abc&i.nam=. THEN
      GOTO efg
    ENDIF
  END
END

(space)");
%end;
%end;
quit;
%mend;

%creat(10);
二维码

扫码加我 拉你入群

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

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

2012-10-28 00:08:16
ziyenano 发表于 2012-10-27 22:41
data ex;
input text:$200.;
cards;
非常感谢,我加问一下,我想在log中简单输出的行吗?因为再新用sql建表不太方便,我想能出来的结果就是类似:

abc01nam
。。。
end

abc02nam
。。。
end

。。。

这样的形式,谢谢啊首先。
二维码

扫码加我 拉你入群

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

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

2012-10-28 09:32:59
Why need a macro, it can easily done in a data step.

data text;

do i=1 to 5;
        x=catt('abc',put(i, z5.), ' AFTER ENTRY    IF abc', put(i, z5.),
               'nam=. THEN      GOTO efg    ENDIF  ENDEND(space)');
        output;
end;
run;

proc print;run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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