Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops SAS执行循环以创建列_Loops_Sas - Fatal编程技术网

Loops SAS执行循环以创建列

Loops SAS执行循环以创建列,loops,sas,Loops,Sas,我在SAS数据集中有一个固定字段。我们称之为成本。 我想创建20个不同的列。Cost-5、Cost-10、Cost-15等等,但我不想将其编码出来,因为我需要对几个字段执行此操作 有人能告诉我如何在SAS的do循环中执行此操作吗?或者如果有更简单的方法,我很想知道。谢谢 这里的一般方法是使用数组,如果要对多个对象执行此操作,则可能会对这些数组使用宏 data class; set sashelp.class; array ages[5]; *your array, hold

我在SAS数据集中有一个固定字段。我们称之为成本。 我想创建20个不同的列。Cost-5、Cost-10、Cost-15等等,但我不想将其编码出来,因为我需要对几个字段执行此操作


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

这里的一般方法是使用数组,如果要对多个对象执行此操作,则可能会对这些数组使用宏

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调用它。循环位于宏内部,是数据步循环,而不是宏循环


您可以在array语句中显式命名变量,也可以采用SAS默认的命名方式。如果希望智能地命名命名变量,也可以创建宏来创建命名变量。

非常感谢!我现在可以用了。我真的很感激它,乔-我试图让它变老,减少5%,然后再减少10%,等等…现在我无法让它工作。我是SAS的新手。有什么想法吗?我很抱歉对年龄[\u I]=age*(.05*\u I)进行bug
ages[\u I]或类似的东西?