2017-03-19 65 views
0

我是SAS新手,所以如果這個問題太簡單,我很抱歉。我嘗試了很多關於這方面的研究,但我不清楚如何繼續。使用全局宏變量初始化SAS數據集通過遞增

我想用一個對應於已經存在的宏變量var1,...,varN的特性初始化一個新的SAS數據集。爲了簡單起見,假設N已經在這些變量的生成過程中被定義爲宏變量。我想沿着下面的代碼,不工作的線路做一些事情:

%let var1 = 3; 
%let var2 = 2.5; 
%let var3 = 1; 
[...] 
%let varN = 2; 


Data ABC; 
    do i = 1 to &N; 
    x = var&i.; 
    end; 
run; 

相信的問題之一是,不像%的人,「我」是不是一個宏觀變量。我已經嘗試貓(var,i)上的變體,但它沒有所需的行爲,因爲我想要& var &我來解決。 有沒有辦法在DATA步驟中完成這項工作?

回答

3

我無法想象這樣做的情況實際上是一個好主意,不過,這裏有一個答案。您不能使用標準宏變量& & var &我因爲那麼您將需要%DO循環。要將其保存在數據步驟中,請使用SYMGET。

%let var1=1; 
%let var2=2; 
%let var3=3; 
%let N=3; 

Data ABC; 
    do i=1 to &N; 
     x = symget(catt('var', i)); *character value; 
     y = symgetN(catt('var', i)); *numeric value; 
     output; 
    end; 
run; 

proc print data=abc; 
run; 
+0

謝謝@Reeza。你能教我一下爲什麼這不是一個好主意嗎?什麼是更好的方法? – Lepidopterist

+1

symgetN - X應該是數字右鍵 –

+0

謝謝@data_null_,我做了更改。 – Reeza