我在SAS数据集中有一个固定字段。我们称之为成本。 我想创建20个不同的列。成本 - 5,成本 - 10,成本 - 15,依此类推,但我不想将其编码,因为我需要为多个领域执行此操作。
有人能告诉我如何在SAS的do循环中执行此操作吗?或者,如果有更简单的方法,我很想知道。谢谢!
答案 0 :(得分:2)
这里的一般方法是使用数组,如果你为多个事情这样做,可能会使用这些数组的宏。
data class;
set sashelp.class;
array ages[5]; *your array, holding your 5 new columns;
do _i = 1 to 5; *loop over the array;
ages[_i] = age-_i; *or -(5*_i) or whatever you are doing;
end;
run;
然后,如果你想为许多变量做到这一点,那么取这四行,将它们放在一个宏中,为可能发生变化的任何东西创建参数,然后从datastep中调用它,但需要多次。循环在宏内部,是一个数据步循环,而不是宏循环。
您可以在数组语句中显式命名变量,或者只是采用SAS默认执行的操作。如果希望智能地命名它们,也可以创建一个宏来创建命名变量。