DATA Step, Macro, Functions and more

Loop in SAS (continued)

Reply
N/A
Posts: 0

Loop in SAS (continued)

Sorry This post is continuation of the previous post (Loop in SAS) .Thanks

NOTE: I am also not sure about this line in the code too: where myTIME lt '14:05:00't + minute{i};

I am trying to put a limit to tell SAS where I want it to end each day and to increment that ending time by 1 minute each time.

data work.{i}test;
set work.source;
by myDay;
retain ORIGINDatetime;
FIRSTOBS = first.myDay;
if FIRSTOBS then do;
ORIGINDatetime = myDateTime + (60 * {i});
end;
format ORIGINDatetime datetime.;
run;

data work.{i}test01;
set work.{i}test;
where myTIME lt '14:05:00't + minute{i};
run;

proc sql;
create table work.{i}test02 as
select myDay,mean(price) as avg_price
from work.{i}test01
group by myDay;
quit;
Super Contributor
Super Contributor
Posts: 3,174

Re: Loop in SAS (continued)

Posted in reply to deleted_user
You have a basic SAS DATA step syntax error in your DATA statement (to start). Explain what it is you want to accomplish with the {i} coding technique. Also, for incrementing/decrementing SAS DATE, TIME, and DATETIME (numeric) variables, investigate using the INTNX function in the SAS DATA step.

Scott Barry
SBBWorks, Inc.
Super Contributor
Super Contributor
Posts: 3,174

Re: Loop in SAS (continued)

If you need to execute a set of SAS code iteratively, substituting a value like {i}, you will need to investigate using the SAS MACRO language %DO / %END and substituting a macro variable used in the %DO loop processing. The macro would generate, compile and execute a series of SAS DATA/PROC steps based on your macro logic.

Scott Barry
SBBWorks, Inc.


Google advanced search argument for reference topics/DOC/papers:

macro language iterative do processing site:sas.com
Ask a Question
Discussion stats
  • 2 replies
  • 108 views
  • 0 likes
  • 2 in conversation