SAS中文论坛

标题: 如何让宏自动读取数据库最大的记录数? [打印本页]

作者: shiyiming    时间: 2008-1-13 18:21
标题: 如何让宏自动读取数据库最大的记录数?
我的数据库有N条数据, N是随机的。
我可以先n = _n_来找出N是多少,但是在宏里面我如何自动引用这个N?
比如:
%do %while m = N;

怎样取得这个N?
作者: shiyiming    时间: 2008-1-13 19:02
标题: Re: 如何让宏自动读取数据库最大的记录数?
[code:2jbs68g8]以数据集test举例。
方法一:
data _null_;
dsid=open('test');
n=attrn(dsid,'nobs');
call symput('n',n);
run;
方法二:
data _null_;
set test end=last;
if last then do;
n=_n_;
output;
end;
call symput('n',n);
run;
方法三:
proc sql noprint;
select count(*) into:n from test;
quit;[/code:2jbs68g8]

以上三种方法都把test的观测总数赋给了宏变量n,后面如果你要调用,可以这样 %do %while (m=&n).
作者: shiyiming    时间: 2008-1-16 20:46
标题: Re: 如何让宏自动读取数据库最大的记录数?
Thanks a lot!!!
Very helpful!
作者: shiyiming    时间: 2008-1-23 19:20
标题: Re: 如何让宏自动读取数据库最大的记录数?
我发现,
proc sql noprint;
select count(*) into:n from test;
quit;
最好用。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2