在数据集中应用函数并使用顺序名称重命名变量

时间:2018-02-23 20:32:22

标签: sas

我正在尝试基于指数变换创建一系列新变量。每个变量名称都是顺序a1,a2,... an。我的第一次尝试看起来像这样:

data have;
 input a1 a2 a3 a4;
 datalines;
 1 3 4 5
 45 4 4 3
 45 4 7 8
 345 3 2 1
 3 4 3 1
 5 4 1 4;
run;

data want;
 set have;
  do i=1 to 4;  
   expa&i = exp(a&i);   
 end;
run;

看来我的错误是在do循环语句中进行的,我在那里用索引器重命名变量。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您应该可以使用ARRAY语句执行此操作。

data want;
  set have;
  array old a1-a4 ;
  array new expa1-expa4 ;
  do i=1 to dim(old);  
    new(i) = exp(old(i));   
  end;
  drop i ;
run;