【发布时间】:2018-06-18 17:24:01
【问题描述】:
我已经使用调用 symputx 创建了一个宏变量列表 Item 1 到 Item N,现在我想将它们传输到另一个数据步中的数组,以便数组中的点 1 获取 Item1,点 2 获取 Item2,等等.
do j=1 to &num_OR;
rulesUsed{j}=&&Item&j;
end;
我读到双&符号语法是引用这样的宏变量的方式,但我不断收到各种错误。我敢肯定有一个简单的方法可以解决这个问题,但我是 SAS 新手,而且我读过的搜索中没有提到这种确切类型的问题的文档。
【问题讨论】:
-
为什么要使用宏变量?在尝试使用宏处理器为您生成 SAS 代码之前,您应该先坚持学习 SAS。如果您使用了
call symputx(),那么您必须已经在数据集中拥有数据,只需再次使用该数据集即可。 -
@Tom 我需要在数据集中创建新列以应用一些规则。每次程序运行时所需的列数都会有所不同,因此需要保持一些命名约定来循环,这就是我尝试使用数组的原因。不知道如何将数组分配给一行的值,这就是为什么我试图创建一个宏变量列表然后让数组引用它们。 -- 基本上,如果有 5 样东西,我需要向数据集添加 5 列,并且第 1 列具有事物 1 的值,第 2 列具有事物 2 的值,等等。
-
@S420L Tom 的意思是您不应该为此使用宏变量。数组很好 - 非常明智 - 但宏变量不是这个的正确位置。使用 MERGE 合并具有此信息的数据集,然后使用数组或其他方式。如果您需要有关如何处理它的建议,请随时提出更多细节的问题。最好以原始数据和想要的结果为例。