转换使用SAS SQL创建的变量';进入:';选项转换为字符变量,以便在文件路径中使用

转换使用SAS SQL创建的变量';进入:';选项转换为字符变量,以便在文件路径中使用,sql,sas,Sql,Sas,我有一个数据集,其中有一列字符变量,我希望使用宏一次将一行转换为宏变量,然后在文件路径中使用宏变量(这是yahoo finance类型的场景) 无论如何,我知道使用Into:创建的变量会自动指定为BEST12格式。因此,我尝试在数据null步骤中使用输入将数值变量转换为字符串。long表示转换成功,但当我创建一个数据集来测试变量时,使用如下方法: 数据测试 mynewvar=&mycharvar; run 我收到一条错误消息,说变量(在日志中显示正确的值)(即“GOOG”)尚未初始化。SAS然后

我有一个数据集,其中有一列字符变量,我希望使用宏一次将一行转换为宏变量,然后在文件路径中使用宏变量(这是yahoo finance类型的场景)

无论如何,我知道使用Into:创建的变量会自动指定为BEST12格式。因此,我尝试在数据null步骤中使用输入将数值变量转换为字符串。long表示转换成功,但当我创建一个数据集来测试变量时,使用如下方法:

数据测试
mynewvar=&mycharvar
run

我收到一条错误消息,说变量(在日志中显示正确的值)(即“GOOG”)尚未初始化。SAS然后创建一个包含两列的数据集,一列称为mynewvar,另一列称为“GOOG”

当我尝试将此变量管道化到一个文件路径中,以表示用于下载股票数据的yahoo web地址的一部分时,它返回空值

当我做以下事情时:

%let mycharvar='GOOG';

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

…我是不是真的做错了什么?我肯定我以前做过,但我一辈子都记不起我是怎么做的

谢谢你的帮助


Chris

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

Data test; mynewvar = "&mycharvar"; run;
宏变量为您“编写”代码。它们在编译和运行代码之前进行处理。因此,当
&mycharvar
持有值
GOOG
时,旧代码将被编写为

Data test; mynewvar = GOOG; run;
然后,编译器抱怨
GOOG
尚未初始化。如果查看输出数据集,您将看到一个包含缺少值的GOOG列(

把它放在双引号里,你就会得到你想要的