全部版块 我的主页
论坛 提问 悬赏 求职 新闻 读书 功能一区 悬赏大厅 求助成功区
2245 2
2012-08-27
悬赏 50 个论坛币 已解决
具体问题是这样:想对一系列的数据集进行批量处理。需处理的数据集名称存储在一个数据集中(名字的规律为:data001-data100),请问如何使用宏命令来调用该数据集中的变量,一次调用一个观测?
我一般像下边这样使用,但是总是无法一次性的调用:
%macro example(number1,number2);
%do i=&number1 %to &number2;
%let number=00&i;
data &number;
.........
run;
%end;
%macro example;
然后先执行 example(data001---data009);
之后改为%let number=0&i;
再执行example(data010---data099);
之后还得再改为%let number-&i;
最后执行example(data100,data100);
这样太麻烦了,请问有没什么好的办法啊?
(注:出现以上问题的原因我猜是因为%do 命令的时候自动将&i变为数字型?然后丢失了前边的‘00’?)
请问有没有好办法直接从数据集中依次读入,然后进行操作啊?

最佳答案

Imasasor 查看完整内容

兄弟,如果你所有的数据集名字都在一个数据集中,并且为一个变量下的所观测,假设该变量为setlist,有100个观测。不管你数据集的名字有没有规律,都可以用sql将该变量的所有观测(即所有数据集的名字)赋值给100个宏变量,然后对宏变量所循环。程序如下: proc sql; select setlist into:c1-:c100 from a; quit; /*将100个名字赋给c1,c2,c3...c100等100个宏变量*/ %put &c1 &c100; /*观察一下宏变量的值,是否有错*/ %macro r ...
二维码

扫码加我 拉你入群

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

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

全部回复
2012-8-27 09:16:36
兄弟,如果你所有的数据集名字都在一个数据集中,并且为一个变量下的所观测,假设该变量为setlist,有100个观测。不管你数据集的名字有没有规律,都可以用sql将该变量的所有观测(即所有数据集的名字)赋值给100个宏变量,然后对宏变量所循环。程序如下:
proc sql;
select setlist into:c1-:c100 from a;
quit; /*将100个名字赋给c1,c2,c3...c100等100个宏变量*/
%put &c1 &c100; /*观察一下宏变量的值,是否有错*/
%macro repeat;
%do i=1 %to 100;
data &&c&i;
....
run;
%end;
%mend;
%repeat;
用宏对你所有的数据集执行相同的程序
二维码

扫码加我 拉你入群

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

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

2012-8-29 14:21:45
兄弟最近缺币,能否将50个币给我?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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