如何创建使用SAS阵列的编号变量

如何创建使用SAS阵列的编号变量,sas,Sas,我有一个很大的数据集,需要动态创建超过10列,但是数据量会导致不必要的长代码块。是否可以简化下面的代码,或者使用数组 Data have; x1 = 1; x2 = 2; x3 = 3; x4 = 4; Run; Data want; Set have; y1 = x1*2; y2 = x2*2; y3 = x3*2; y4 = x4*2; Run; 像这样定义两个数组: data want; set have; array varx x:; array vary y1

我有一个很大的数据集,需要动态创建超过10列,但是数据量会导致不必要的长代码块。是否可以简化下面的代码,或者使用数组


Data have;
x1 = 1;
x2 = 2;
x3 = 3;
x4 = 4;
Run;

Data want;
Set have;
y1 = x1*2;
y2 = x2*2;
y3 = x3*2;
y4 = x4*2;
Run;


像这样定义两个数组:

data want;
   set have;
   array varx x:;
   array vary y1-y4;
   do over varx;
      vary=varx*2;
   end;
run;

最好以与VARY相同的方式创建VARX数组。这样,如果HAVE的变量少于4个,则数据步骤不会因索引超出数组而崩溃。