2016-12-02 68 views
1

我已經有一個包含DataSet名稱的表,其中一些名稱中包含宏引用。評估包含宏引用的字符串變量

例如Monthly_Data_ & YYMM(其中YYMM是最近一個月)

我想保持Table與此字符串,但隨後與所評價的DataSet名稱的新變量。

例如Monthly_Data_ & YYMM,Monthly_Data_1612

我無法解決這個問題。如果我將數據集作爲宏變量讀取,它將作爲所需名稱返回,但是我不能將它作爲非評估參考加入到同一行。

我相信這一定是可能的,也許很容易,但我不能讓我的腦海中想到如何做到這一點。

非常感謝

+0

那麼,顯示你在這裏做了什麼。你有它的工作,所以你爲什麼不告訴我們 – AxelH

+0

這不是在這裏工作,這是我如何工作的一個例子。下面的答案是我所追求的。 – Satkin2

+0

**如果我將數據集作爲宏變量讀取,它將作爲所需名稱返回,但是我無法再將它作爲非評估參考加入到同一行**意味着您有正確的結果但未正確存儲到桌子......你是寫那行的人,而不是我。 – AxelH

回答

1

可以使用resolve功能來做到這一點,例如

%let YYMM = 1601; 

data mydata; 
    dsname = 'Monthly_Data_&YYMM'; 
    dsname_resolved = resolve(dsname); 
run; 

N.B.在名稱列中使用的所有宏變量必須在執行resolve函數時在會話中使用正確的值進行定義。如果兩個不同的數據集在名稱中使用相同的宏變量,但在不同的時間使用不同的值,則需要重新定義宏變量並分別運行邏輯,可能需要單獨的數據步驟或call symput + symget

+0

完美,就是我以後的樣子。非常感謝 – Satkin2