这几种方法来自《Renaming in Batches》——Vincent Weng, Educational Testing Service, Princeton, NJ Ying Feng, CTB/McGraw-Hill, Monterey, CA
建立数据
/* Creating a dataset */ DATA A; input id $4. before_var1_after before_var2_after before_var3_after; datalines; i001 1 2 3 i002 3 4 5 i003 6 7 8 i004 9 10 12 ; run;
一、所有变量名前加前缀
/* Creating a dataset */ DATA A; input id $4. before_var1_after before_var2_after before_var3_after; datalines; i001 1 2 3 i002 3 4 5 i003 6 7 8 i004 9 10 12 ; run; /* Adding Prefix on all variables */ %macro rename(lib,dsn,newname); proc contents data=&lib..&dsn; title 'before renaming'; run; proc sql noprint; select nvar into :num_vars from dictionary.tables where libname="&LIB" and memname="&DSN"; select distinct(name) into :var1-:var%trim(%left(&num_vars)) from dictionary.columns where libname="&LIB" and memname="&DSN"; quit; run; proc datasets library = &LIB; modify &DSN; rename %do i = 1 %to &num_vars.; &&var&i = &newname._&&var&i. %end; ; quit; run; proc contents data=&lib..&dsn.; title 'after renaming'; run; %mend rename; DATA B; set A; run; %rename(WORK,B,Try1);
2.对选择的变量名加前缀
/* Adding Prefix on Selected Variables */ %macro addprefix(lib,dsn,start,end,newname); proc contents data=&lib..&dsn; title 'before renaming'; run; proc sql noprint; select nvar into :num_vars from dictionary.tables where libname="&LIB" and memname="&DSN"; select distinct(name) into :var1-:var%trim(%left(&num_vars)) from dictionary.columns where libname="&LIB" and memname="&DSN"; quit; run; proc datasets library = &LIB; modify &DSN; rename %do i = &start. %to &end.; &&var&i = &newname_&&var&i. %end; ; quit; run; proc contents data=&lib..&dsn; title 'Adding Prefix on Selected variables'; run; %mend addprefix; DATA C; set A; run;