BookmarkSubscribeRSS Feed
GeorgeSAS
Lapis Lazuli | Level 10

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!

2 REPLIES 2
Reeza
Super User

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. 

Ksharp
Super User
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;

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1096 views
  • 2 likes
  • 3 in conversation