LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (March 2003, week 5)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 31 Mar 2003 10:11:17 -0500
Reply-To:     "Droogendyk, Harry" <Harry.Droogendyk@CIBC.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Droogendyk, Harry" <Harry.Droogendyk@CIBC.COM>
Subject:      Re: repeated code
Content-Type: text/plain; charset="iso-8859-1"

Use a macro loop within a macro.

Untested:

data one; do stdsvc = 1 to 100; output; end; run;

%macro do_lag(lmt); data two; set one; stdsvc1 = stdsvc; %do i = 1 %to &lmt; stdsvc%eval(&i+1) = lag&i(stdsvc); %end; run; %mend do_lag;

%do_lag(71)

proc print data=two; run;

-----Original Message----- From: Jean Roth [mailto:jroth@NBER.ORG] Sent: Monday, March 31, 2003 9:45 AM To: SAS-L@LISTSERV.UGA.EDU Subject: repeated code

Hi Macro Mavens,

I'd like to create a bunch of lag variables for a dataset

data one; set one; svctyp1 = stdsvc; svctyp2 = lag1(stdsvc); ... svctyp72 = lag71(stdsvc);

Can I do this without a line of code for each lag variable?

Thanks,

Jean Roth National Bureau of Economic Research http://www.nber.org/data


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