我使用调用symputx来创建宏变量列表项目1到项目N现在我想将它们转移到另一个datastep中的数组,以便数组中的点1获得Item1,点2获得Item2等等。
do j=1 to &num_OR;
rulesUsed{j}=&&Item&j;
end;
我读到双&符号语法是引用像这样的宏变量的方法,但我不断得到各种错误。我确定这是一个简单的解决方法,但我是SAS的新手,并且我没有通过搜索提到的文件提到了这种确切类型的问题。
答案 0 :(得分:1)
简短的回答是:一般来说,不要这样做。宏变量不是存储数据的好方法,而且几乎总是有更好的方法。
但是如果你需要,你的问题是宏变量不能使用数据步变量。
do j=1 to &num_OR;
rulesUsed{j}=&&Item&j;
end;
j
是数据步变量,而不是宏变量,因此它不是&j
。你需要:
1 - 使用symget
检索宏变量。这是一个数据步骤函数,它接受一个普通的数据步骤字符参数(所以变量,一个“”字符串等)并返回带有该名称的宏变量。所以
rulesUsed[j] = symget(cats("item",j));
2 - 使用宏循环检索宏变量。
%do j = 1 %to &num_or;
rulesUsed[&j.] = &&item&j;
%end;
这两种方法都可以正常工作。
答案 1 :(得分:0)