我有一个sas程序,它合并两个包含给定城市信息的数据集。城市名称是每个数据集标题的一部分,例如亚特兰大:SAS:迭代数据集名称
data work.AtlantaComplete;
merge dir.Atlanta1 dir.Atlanta2;
by mergevar;
run;
我想运行的城市的一个长长的清单上的合并,而无需进行单独.sas文件的每一个。随着SAS的有限知识,我试过如下:
%let city1 = Boston;
...
%let cityN = Miami;
%DO for i = 1 to N;
data work.city&i;
set dir.city&i.1 dir.city&i.2;
by mergevar;
run;
这产生了一些错误,最主要的是%DO语句必须是一个数据的步骤中。这对我的任务不起作用,因为必须在第一个数据步骤之前定义循环。
一个可以在sas程序中实现的解决方案将是最优的,但我也开放给类似Unix Bash shell脚本的东西,该脚本一次提供一个城市作为系统输入到sas程序(类似于Python中的sys.argv)。
感谢您的帮助
非常感谢kl78和克里斯j。最常用的kl78的答案,但克里斯J表明需要双周期来解决宏观变量。 –