BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
HG
Calcite | Level 5 HG
Calcite | Level 5

Hi,

what is the best way to rename my variables?

data class;

  set sashelp.class;

newage1=age;

newweight1=weight;

newheight1=heigt;

run;

I have a lot of variables end with '1'. I want to take out '1'.

in my example, I need to rename newage1=newage and all other variables.

Thanks!

1 ACCEPTED SOLUTION

Accepted Solutions
Linlin
Lapis Lazuli | Level 10

how about:

data class;
  set sashelp.class (obs=1);
  newage1=age;
  neww1=weight;
  newh1=height;
run;

proc sql;
  select catx('=',name,substr(name,1,length(name)-1)) into : list separated by ' '
   from dictionary.columns
     where libname='WORK' and memname='CLASS' and substr(name,length(name))='1';
quit;

data newclass;
   set class;
   rename &list;
run;
proc print;run;

View solution in original post

2 REPLIES 2
Linlin
Lapis Lazuli | Level 10

how about:

data class;
  set sashelp.class (obs=1);
  newage1=age;
  neww1=weight;
  newh1=height;
run;

proc sql;
  select catx('=',name,substr(name,1,length(name)-1)) into : list separated by ' '
   from dictionary.columns
     where libname='WORK' and memname='CLASS' and substr(name,length(name))='1';
quit;

data newclass;
   set class;
   rename &list;
run;
proc print;run;

Patrick
Opal | Level 21

Pretty close to what Linlin suggest but using a RegEx to match more precisely the variables you want renamed - and using Proc Datasets instead of a Data Step to do the renaming (and so avoiding a full pass through the data).

data class;
  set sashelp.class;
  newage1=age;
  newweight1=weight;
  newheight1=height;
run;


proc sql noprint;
  select cats(name,'=',prxchange('s/(.+)(1\b)/$1/o',1,name)) into : list separated by ' '
   from dictionary.columns
     where libname='WORK' and memname='CLASS' and prxmatch('/.+1\b/',name)
  ;
quit;

proc datasets lib=work nolist;
  modify class;
    rename &list;
  ;
quit;

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!

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
  • 1220 views
  • 4 likes
  • 3 in conversation