簡體   English   中英

將SAS數據集列作為宏參數傳遞

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM