将使用SAS SQL“Into:”选项创建的变量转换为字符变量,以便可以在文件路径中使用它

时间:2013-11-28 01:21:00

标签: sql sas

我有一个包含单列字符变量的数据集,我希望使用宏一次将一行转换为宏变量,然后将其用于文件路径(这是雅虎财务类型方案)

无论如何,我知道使用Into:创建的变量会自动分配格式BEST12。所以我尝试在数据 null 步骤中使用输入将数字变量转换为字符串。长说转换是成功的,但是当我创建一个数据集来测试变量时使用类似的东西:

Data test; mynewvar = &mycharvar; run;

我收到一条错误消息,说明变量(在日志中显示正确的值(即'GOOG')尚未初始化.SAS随后会创建一个包含两列的数据集,一列名为mynewvar,另一列名为'GOOG'。< / p>

当我尝试将此变量传递到文件路径中以表示用于下载股票数据的yahoo网址的一部分时,它返回空值。

当我做类似的事情时:

%let mycharvar = 'GOOG';

然后将mycharvar拖放到yahoo CSV导入的文件路径中,它可以正常工作......

......我在这里做的事情显然是错的吗?我确定我以前做过这件事,但我不知道生活中我记得我是怎么做到的。

感谢您的帮助,

克里斯

1 个答案:

答案 0 :(得分:0)

在数据步骤中使用时,需要在值周围加上双引号。

Data test; mynewvar = "&mycharvar"; run;

宏变量为您“编写”代码。在编译和运行代码之前处理它们。因此,当&mycharvar保存值GOOG时,您的旧代码将被写为

Data test; mynewvar = GOOG; run;

编译器然后抱怨GOOG尚未初始化。如果查看输出数据集,您将看到包含缺少值(.)的GOOG列。

把它放在双引号中,你会得到你想要的东西。