我正在尝试基于指数变换创建一系列新变量。每个变量名称都是顺序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循环语句中进行的,我在那里用索引器重命名变量。这样做的正确方法是什么?
答案 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;