如果变量名是有规律的,用楼上的array+do loop就可以rename,之后再drop掉旧的就好。
如果变量名没有规律,你又不想用proc sql,我有个笨办法就是转置用b替换a后再转置回去:
data b; /*提取变量名*/
set sashelp.vcolumn;
where libname="WORK" and memname="A1" and name like 'a%';
run;
data c(keep=name name2); /*创建新名*/
set b;
name2='b'||substr(name,2);
run;
proc transpose data=a1 out=a2 name=name;
run;
proc sort data=c;
by name;
proc sort data=a2;
by name;
data d (drop=name);
merge c a2;
by name;
run;
proc transpose data=d out=new_a1(drop=_name_);
ID name2;