Tuesday, February 12, 2008

Using PROC SQL to Rename Vars - this time stripping characters

***********************************
* THE LIBRARY AND Dataset NAMES IN*
* MACRO CALL MUST BE IN UPPERCASE *
***********************************;
*options macrogen mprint mlogic symbolgen;
%macro rename(lib,dsn);
options pageno=1 nodate;
proc contents data=&lib..&dsn;
title "Before Renaming All Variables";
run;
*********************************
* Keep original variable names *
*********************************;
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;

******************************************
* Remove suffix _base from variable names*
******************************************;
proc sql noprint;
select nvar into :num_vars
from dictionary.tables
where libname="&LIB" and
memname="&DSN";
select distinct(tranwrd(name,'_base','')) into
:varnew1-:varnew%TRIM(%LEFT(&num_vars))
from dictionary.columns
where libname="&LIB" and
memname="&DSN";
quit;
run;
********************
* Rename variables *
********************;
proc datasets library=&LIB;
modify &DSN;
%do i=1 %to &num_vars;
rename &&var&i = &&varnew&i;
%end;
quit;
run;

/**** CHECKING THE RESULTS ****/;
options pageno=1 nodate;
proc contents data=&lib..&dsn;
title "After Renaming Variables without SUFFIX _base";
run;
%mend rename;

%rename(WORK,PANEL5);
run;

No comments: