SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 519|回复: 4
打印 上一主题 下一主题

请高手指点一下macro程序中的错误,急!

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-5-6 11:16:12 | 只看该作者

请高手指点一下macro程序中的错误,急!

这段CODE是为了能自动给DATA命名,比如,当SC=a,那么就把这行记录存在a_a里,如果SC=b,那么就把这行记录存在a_b里,以此类推,一直到a_c DATA.
但这段程序有毛病,无法运行,请高手们指点一二。
谢谢!!!

data a;
input sc $ pt map;
cards;
a 1 62
b 3 9
c 2 7
d 1 12
;
run;
%macro na;
proc sql;
select count(*) into :n from a;
select sc into :va separated by ' ' from a;
quit;
%do i=1 %to &n.;
proc sql;
create table a_&va. as
select * from a
where sc=%scan(&va.,&i.);
quit;
%end;
%mend;
%na
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-5-6 21:00:12 | 只看该作者

Re: 请高手指点一下macro程序中的错误,急!

[code:2ep5zn1n]%macro na;
proc sql;
select count(*) into :n from a;
select sc into :va separated by ' ' from a;
quit;
%put &va.;
%do i=1 %to &n.;
proc sql;
create table a_%scan(&va.,&i.) as
select * from a
where sc="%scan(&va.,&i.)";
quit;
%end;
%mend;
%na[/code:2ep5zn1n]

The following code may be shorter.
[code:2ep5zn1n]proc sort data =a out =b(keep =sc) nodupkey; by sc;
run;
data _null_;
        set b;
        call execute('data a_'||strip(sc)||'; set a; where sc='||'"'||strip(sc)||'"; run;');
run;[/code:2ep5zn1n]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-5-6 22:16:03 | 只看该作者

Re: 请高手指点一下macro程序中的错误,急!

thanks a lot, that is super nice.

还有个问题:就是怎么再把这些新产生的data (ds_a, ds_b,...)用excel一个一个的sheet自动存在同一个excel文件里,sheet名字就用a,b,c....
谢谢!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-5-7 01:58:10 | 只看该作者

Re: 请高手指点一下macro程序中的错误,急!

Many ways work on that. One of fairly simple ways is like the following:
[code:daepyy2p]libname urxls "c:\aa.xls";
proc sort data =a out =b(keep =sc) nodupkey; by sc;
run;
data _null_;
   set b;
   call execute('data urxls.a_'||strip(sc)||'; set a; where sc='||'"'||strip(sc)||'"; run;');
run;
libname urxls clear;[/code:daepyy2p]

JingJu
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-5-10 11:20:18 | 只看该作者

Re: 请高手指点一下macro程序中的错误,急!

牛人,再次感谢!!!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-10 15:02 , Processed in 0.234945 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表