currently I have a working code, whereI split a dataset(of 25 years) into 25 different sub datasets and process each of the sub dataset in a macro(working code below;repetitive code indicated by ...);so far so good. My requirement is I need to split this dataset by monthly and my question is what is the best way to do it. If it were C++, I'd use a for loop to go over the dataset and store each sub dataset as an array element and pass each array element to the macro; how would I do it in SAS. Clearly, the approach that I followed below is inefficient, because that would require having 300 sub datasets and a code repeted over 300 times; (PS:I am new to SAS); thank you in advance *split the time series for each year to accomodate LM12; data yr1989mktdata ....... yr2000mktdata yr2001mktdata yr2002mktdata yr2003mktdata yr2004mktdata yr2005mktdata yr2006mktdata yr2007mktdata yr2008mktdata yr2009mktdata yr2010mktdata yr2011mktdata yr2012mktdata ; set mktdata; if date > '1jan1989'd and date <= '31dec1989'd then output yr1989mktdata; .... .. ... ... else if date > '1jan2000'd and date <= '31dec2000'd then output yr2000mktdata; else if date > '1jan2001'd and date <= '31dec2001'd then output yr2001mktdata; else if date > '1jan2002'd and date <= '31dec2002'd then output yr2002mktdata; else if date > '1jan2003'd and date <= '31dec2003'd then output yr2003mktdata; else if date > '1jan2004'd and date <= '31dec2004'd then output yr2004mktdata; else if date > '1jan2005'd and date <= '31dec2005'd then output yr2005mktdata; else if date > '1jan2006'd and date <= '31dec2006'd then output yr2006mktdata; else if date > '1jan2007'd and date <= '31dec2007'd then output yr2007mktdata; ............. ........... .......... run; %macro LMGenerate(submktdata,yeartag); %mend LMGenerate; %LMGenerate(yr1989mktdata,1989) ... .... .... %LMGenerate(yr2000mktdata,2000) %LMGenerate(yr2001mktdata,2001) %LMGenerate(yr2002mktdata,2002) %LMGenerate(yr2003mktdata,2003) ... ... %LMGenerate(yr2004mktdata,2012)
... View more