[英]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
。 只需将选项添加到您的from
或join
语句即可。 然后使用datastep
, proc append
或proc sql; insert into
追加数据集proc sql; insert into
proc sql; insert into
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.