簡體   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