繁体   English   中英

sas宏拆分数据集应放在哪里

[英]sas macro split dataset where should it locate

我有一个SAS宏部分,它将运行整个数据集并进行一些分析,在分析部分中,每个实例一次处理一次,以便可以运行整个数据集,我们可以密切注意'log文件。

但是,我想将整个数据集分成几个部分。 (例如,前500个观测值,501〜1000个观测值等)。 这意味着引擎将在运行500个实例后停止,然后再次运行。 最后,它们可以像以前一样在一个表中生成。 如何将这个“拆分”部分添加到之前的代码中?

初始代码:

 %macro mymac;
 OPTIONS NOTES SOURCE SOURCE2 MPRINT MLOGIC MERROR SYMBOLGEN;

 /* Part A starts*/

 data _null_;
 set WORK.LOCATION end=last;
    if last then call symput('nfiles',_n_);
 run;

 %do i=1 %to &nfiles;

 data _null_;
 set oriework.PO_LOC;
    if &i=_n_ then call symput('code',LOCATION_ID);
 run;

 /* Part A ends */

 %put &code;

 proc sql; 

 create table WORK.pt as select
 ......

 quit;

 %if %sysfunc(exist(WORK.result)) %then %do;
 data WORK.result;
 set WORK.result WORK.pt;
 run;
 %end;
 %else %do;
 data WORK.result;
 set WORK.pt;
 run;
 %end;


 %end;

 %mend;

 %mymac;

其中“ WORK.LOCATION”是我在“ proc sql”过程中调用的数据集,其中包含我需要的所有“ LOCATION_ID”信息。

A部分是Macro从头到尾运行的地方; 我可以用数据拆分程序代替它,以便每500个观测值一起运行,最后合并到一张表中吗?

谢谢!

在数据集上使用第二个宏do循环(在proc sql语句周围),调用宏变量作为计数器,下一个开始观察值以及下一批要处理的观察值数。 然后,您可以在数据集选项中使用firstobs=obs=来使用它们,例如(firstobs= &startobservation obs=&nobs)并在数据集名称中使用计数器macrovar。 这也适用于proc sql 只需将选项添加到您的fromjoin语句即可。 然后使用datastepproc appendproc sql; insert into追加数据集proc sql; insert into proc sql; insert into

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM