从SAS PROC IML中的循环内部生成变量的文件名

时间:2013-08-05 19:53:20

标签: sas sas-macro sas-iml

我正在尝试将数据文件细分为小文件,其中一个变量作为这些文件名称的一部分。具体来说,我有一堆人口普查区,还有其他变量。我正在将它们读入矩阵,执行一些操作,现在想将数据导出循环并将其保存为外部数据文件,将人口普查区作为名称的一部分;这一切必须在不打破循环或退出IML的情况下完成,因为我正在进入下一个领域:

read i = first census tract;
append data from other matrix;
save out file as "rld_'census_tract' value";
read next census tract;
repeat;

我尝试过symput函数,但它需要在IML中使用数据 null 来打破流程。

2 个答案:

答案 0 :(得分:0)

我不知道IML中的解决方案(或者即使有),但我建议采用不同的解决方案。

将所有矩阵写入单个数据集(通过将它们全部附加在一起或通过在循环进行时附加到单个数据集,以较容易的方式),并将“人口普查区”附加为该数据集中的一个变量。然后使用sas datastep将它们写出来分离文件。如果您正在谈论写出单独的sas数据集,您可以使用条件逻辑,也可以创建宏调用来执行此操作;如果您正在编写CSV或文本文件等外部文件,则可以在filevar语句中使用文件名变量(file选项)并将其写出来。

这将非常有效(特别是对于外部文件方法),并且不需要保留在IML中。

答案 1 :(得分:0)

在SAS / IML 12.1中,您可以use the USE and CREATE statements with arguments that are evaluated at run time

如果尚未升级到SAS / IML 12.1,则可以使用CALL SYMPUT和SYMGET函数来填充和检索宏变量。这些函数在IML语言中工作:无需使用DATA NULL 。请参阅macros and loops in IML上的文章。

相关问题