LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (July 2002, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Thu, 11 Jul 2002 08:21:54 -0400
Reply-To:     Howard_Schreier@ITA.DOC.GOV
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Howard_Schreier@ITA.DOC.GOV
Subject:      Re: Wish: Bulk rename of variable list

This feature is present in V. 8.2.

For example:

data test; retain abba1-abba3 5; run;

data renamed; set test; rename abba1-abba3 = elvis1-elvis3; run;

data _null_; set renamed; put _all_; run;

The log shows:

elvis1=5 elvis2=5 elvis3=5 _ERROR_=0 _N_=1

SASTrap: This works in a RENAME= dataset option or in a RENAME statement in a DATA step. It does not work in a RENAME statement in PROC DATASETS.

On Wed, 10 Jul 2002 13:52:40 -0400, Bob Burnham <robert.a.burnham@DARTMOUTH.EDU> wrote:

>J.Groeneveld@ITGROUPS.COM (Jim Groeneveld) writes: > > +---------------------------------------------------------------- > | What I very much would appreciate in some new(er) SAS version is > | a bulk-RENAME feature. Instead of (OldVar1=NewVar1 > | OldVar2=NewVar2 ...... OldVarN=NewVarN) I would like something > | as (OldVar1 -- OldVarN = NewVar1 - NewVarN) or even a very > | advanced (OldVar1 -- OldVarN = Prefix), automatically numbering > | new variables starting with a given prefix. > +---------------------------------------------------------------- > >Hi Jim, > >That would be a cool feature to add. In the meantime, I use a >macro like this one to do what you mention: > >%macro rename(old, new, n); > %do i = 1 %to &n; &old&i=&new&i %end; >%mend; > >/* generate some test data */ > >data test (drop = x y); > array abba {*} abba1-abba3; > do x = 1 to 3; > do y = 1 to 3; > abba{y} = (x * 10) + y; > end; > output; > end; > run; > >/* rename abba1-abba3 to elvis1-elvis3 */ > >proc datasets; > modify test; > rename %rename(abba, elvis, 3); > run; > >The log then says: > >22 ! modify test; >23 rename %rename(abba, elvis, 3); >NOTE: Renaming variable abba1 to elvis1. >NOTE: Renaming variable abba2 to elvis2. >NOTE: Renaming variable abba3 to elvis3. >24 run; > > >It doesn't do everything that you might like, but it sure beats >having to type out all of the variable names. > >Best regards to everyone on the list, > >Bob > >-- >Bob Burnham >bburnham@dartmouth.edu >http://www.dartmouth.edu/~bburnham


Back to: Top of message | Previous page | Main SAS-L page