[英]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.