全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2515 9
2017-06-11
初学宏,感觉理解得不对,请问如何能做这种批量化处理,求大神带带。

无标题.png

%macro  combine(name=, length=);
&name=.; *先设置成missing;

%do i=1 %to &length;
%if &name___&&i=1 %then %do;
&name=&i;
%return;%end; *如果abc___x=1,则设置abc=x,退出循环;
%end;
%mend combine;

data datab;
set dataa;
%combine(name=abc, length=3)
*怎么调用都不对;
run;
我以为宏是可以当做一段文本,直接嵌入data步每次改参数(在这里是想要合并的列名,列数)就行,很显然不对




二维码

扫码加我 拉你入群

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

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

全部回复
2017-6-13 01:00:53
没人吗
二维码

扫码加我 拉你入群

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

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

2017-6-13 09:31:19
复制代码
二维码

扫码加我 拉你入群

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

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

2017-6-13 09:31:27
如果需要碰到条件满足即终止:
复制代码
二维码

扫码加我 拉你入群

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

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

2017-6-13 11:17:30
data test;
input abc_1 abc_2 abc_3;
datalines;
1 0 0
0 0 0
0 1 0
0 1 0
0 0 1
0 0 1
0 0 0
0 1 0
;

proc sql;
select nvar into:nvar
from dictionary.tables
where libname='WORK' and memname='TEST';
quit;
%put &nvar;

options mlogic symbolgen;

%macro test(name);
%do i=1 %to &nvar;
if &name._&i=1 then &name=&i;
%if (&name=&i or &i=&nvar) %then %goto leave;
%end;
%leave: if &name <0 then &name=.;
%mend;

data test2;
set test;
%test(abc);
run;
二维码

扫码加我 拉你入群

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

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

2017-6-14 02:38:31
freetiger 发表于 2017-6-13 09:31
如果需要碰到条件满足即终止:
非常感谢啊,终于弄懂了{:2_37:}
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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