我創建了一個SAS宏宏A,它接受一個變量名稱並返回該名稱的轉換版本,即如果您運行%A(asdf)
,則退出asdf_log asdf_exp asdf_10
。我想寫另一個宏,即宏B,它接收來自第一個宏的輸出並將它們一起附加到一個新的宏變量中。創建SAS宏以創建一個宏變量
%macro B(varList, outputName);
%let &outputName =
%A(var1);
%A(var2);
;
%mend
幾乎是我想要做的,只是它顯然不能編譯。 我也不確定這是否可以在SAS中使用。 作爲進一步的複雜性,宏B的輸入是我想要運行宏A並添加到一個變量名稱長列表中的變量列表。
爲什麼?因爲我有一個運行在變量列表上的宏,我想在變量列表上運行它。
例如: 我有%let varList = x y;
,我想作爲輸出x_log x_exp x_10 y_log y_exp y_10
。要做到這一點,我想兩個宏一個宏A,即返回轉換後的變量名:
%macro A(var);
&var._log
&var._exp
&var._10
%mend
我不能讓第二個宏(如上面寫B)的正常工作。
你可以發佈一些示例值嗎?乍一看,它看起來像你有太多的分號。 – Tom
嗨,湯姆,是的,由於奇怪的分號放置不會運行。明天我會舉一個更全面的例子。但是,我想要的是&outputName包含兩次(或更多次)運行宏A的結果。 – Sheldon