[英]Passing SAS dataset column as macro parameter
我有一個帶有值的SAS數據集
yyyymm
201605
201606
201607
201608
201609
我試圖找到一種方法一次將這些值傳遞給宏,這樣
do while dataset still has value
%macro passdata(yyyymm);
end
如何在SAS中執行此操作。 有人可以幫忙提供示例代碼段嗎?
如先前的評論所述,傳遞參數的方法是通過調用執行例程。 請注意,這必須在datastep環境中完成。 這些行是從您輸入的集中讀取的。
您可以輸入多個變量。 只需在“ ||”中添加更多變量 分隔符。 請注意,變量中可能包含很多空格。 (==請謹慎進行比較。)
這是一個小的示例代碼。 測試。
data start_data;
input date_var ;
datalines;
201605
201606
201607
201608
201609
;
run;
%macro Do_stuff(input_var);
%put 'Line generates value ' &input_var;
%mend do_stuff;
data _null_;
set start_data;
call execute('%do_stuff('||date_var||')' );
run;
嘗試此示例,然后嘗試進行修改以滿足您的需求...從“源”數據集中,我們可以使用調用symput()為每個觀測值分配一個宏令牌(由SAS自動數據集變量n區分,因此為My_token1,My_token2等)。 )一旦定義了一組宏變量,就循環遍歷它們! 該程序會將所有單獨的記錄從源打印到SAS日志:
data source;
do var=1000 to 1010;
output;
end;
run;
data _null_;
set source;
call symput(compress("My_token"||_n_),var);
run;
%put &my_token1 &my_token4;
%Macro neat;
%do this=1 %to 11;
*Check the log.;
%put &&My_token&this;
%end;
%mend;
%neat;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.