DATA Step, Macro, Functions and more

renmae multiple name

Reply
Regular Contributor
Posts: 241

renmae multiple name

[ Edited ]

Hello everyone,

 

I want rename multiple varaibles (they have common begin characters var_)in data three, but not work,please help.

 

data one;

var_1=1;var_2=2;var_3=3;var_4=4; var5=5;output;

run;

 

 

data two;

set one;

rename var_3=var_3_new;

*rename var_:=varname(var_:  )||_new;

run;

 

data three;

set one;

rename var_:=varname(var_:  )||_new;/*this not work*/

run;

 

Thanks!

Super User
Posts: 19,870

Re: renmae multiple name

Posted in reply to GeorgeSAS

The rename only takes text, you can't use functions like that. You need to list all out. 

 

If if you have a series with common prefix you can do the following:

 

rename x1-x5 = new_x1-new_x5;

 

Use prefixes rather than suffixes to make your life easier. 

Super User
Posts: 10,046

Re: renmae multiple name

Posted in reply to GeorgeSAS
You could create a map file to describe how to rename these variables.




data one;
var_1=1;var_2=2;var_3=3;var_4=4; var5=5;output;
run;

proc transpose data=one(obs=0) out=temp;
var _all_;
run;

data temp;
 set temp;
 new=catx('_',_name_,'new');
run;

data _null_;
 set temp end=last;
 if _n_=1 then call execute('proc datasets lib=work nolist nodetails;modify one;rename ');
 call execute(catx('=',_name_,new));
 if last then call execute(';quit;');
run;

Ask a Question
Discussion stats
  • 2 replies
  • 199 views
  • 2 likes
  • 3 in conversation