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;
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.
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