我有一个包含单列字符变量的数据集,我希望使用宏一次将一行转换为宏变量,然后将其用于文件路径(这是雅虎财务类型方案)
无论如何,我知道使用Into:创建的变量会自动分配格式BEST12。所以我尝试在数据 null 步骤中使用输入将数字变量转换为字符串。长说转换是成功的,但是当我创建一个数据集来测试变量时使用类似的东西:
Data test;
mynewvar = &mycharvar
;
run;
我收到一条错误消息,说明变量(在日志中显示正确的值(即'GOOG')尚未初始化.SAS随后会创建一个包含两列的数据集,一列名为mynewvar,另一列名为'GOOG'。< / p>
当我尝试将此变量传递到文件路径中以表示用于下载股票数据的yahoo网址的一部分时,它返回空值。
当我做类似的事情时:
%let mycharvar = 'GOOG';
然后将mycharvar拖放到yahoo CSV导入的文件路径中,它可以正常工作......
......我在这里做的事情显然是错的吗?我确定我以前做过这件事,但我不知道生活中我记得我是怎么做到的。
感谢您的帮助,
克里斯
答案 0 :(得分:0)
在数据步骤中使用时,需要在值周围加上双引号。
Data test; mynewvar = "&mycharvar"; run;
宏变量为您“编写”代码。在编译和运行代码之前处理它们。因此,当&mycharvar
保存值GOOG
时,您的旧代码将被写为
Data test; mynewvar = GOOG; run;
编译器然后抱怨GOOG
尚未初始化。如果查看输出数据集,您将看到包含缺少值(.
)的GOOG列。
把它放在双引号中,你会得到你想要的东西。