2016-12-02 67 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