SAS做循环来创建列

时间:2017-02-08 20:54:44

标签: loops sas

我在SAS数据集中有一个固定字段。我们称之为成本。 我想创建20个不同的列。成本 - 5,成本 - 10,成本 - 15,依此类推,但我不想将其编码,因为我需要为多个领域执行此操作。

有人能告诉我如何在SAS的do循环中执行此操作吗?或者,如果有更简单的方法,我很想知道。谢谢!

1 个答案:

答案 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默认执行的操作。如果希望智能地命名它们,也可以创建一个宏来创建命名变量。