我有一个数据集,变量为col1,col2,col3,...,col15。我想将它们重命名为new1,new2,new3,...,new 15.我可以写15次相似的重命名col1 = new1;在SAS中,但我如何使用循环实现此目的?感谢。
答案 0 :(得分:9)
首先,目前尚不清楚您是在谈论rename
中还是数据步骤中的proc datasets
语句。如果您不需要对数据执行任何其他操作,则应该使用proc数据集来执行此操作,因为否则(在数据步骤中)您不必要地读取/写入数据集中的每个记录,只是为了更改变量名称
如果 使用数据步骤,请使用
rename col1-col15=new1-new15;
我不确定您是否可以在proc数据集中使用该快捷方式。这将我们带到你的循环问题。除非您多次或动态地执行此操作,否则复制/粘贴代码15次可能同样容易。这是一种生成所需语句的方法,将其放在宏变量中,并在重命名语句中使用该宏变量:
data _null_;
length myVar $ 1000;
*myVar='';
do i=1 to 15;
myVar=catx(' ',myVar,' ',cats('col',i,'=','new',i));
end;
call symput('rename',myVar);
run;
%put &rename;
proc datasets library=mylibrary;
modify mydataset;
rename &rename;
run;
答案 1 :(得分:3)
如果你的变量名称符合一个漂亮,简单的命名模式,这是一种方法:
DATA out;
SET in;
ARRAY oldnames (15) col1-col15;
ARRAY newnames (15) new1-new15;
DO i = 1 TO 15;
newnames(i) = oldnames(i) ;
END;
RUN;
或者更一般地说:
DATA out;
SET in;
ARRAY oldnames (4) abc def ghi jkl ;
ARRAY newnames (4) mno pqr stu vwx ;
DO i = 1 TO 4;
newnames(i) = oldnames(i) ;
END;
RUN;