Yes, I am using SAS 9. Thank you for replying Tom. Your solution works well when the returns are for a single firm, however when I modify the data to include a firm_id and add data for second firm I receive errors. The modified code with firm_id is as follows... data time1 ; input firm_id $6. date yymmdd10. return ; format date yymm7.; cards; firmA 2012-11-01 . firmA 2013-01-01 100 firmA 2013-02-01 100 firmA 2013-03-01 100 firmA 2013-04-01 100 firmA 2013-05-01 100 firmA 2013-07-01 100 firmA 2013-08-01 100 firmA 2013-09-01 100 firmA 2013-10-01 100 firmB 2012-11-01 . firmB 2013-01-01 100 firmB 2013-02-01 100 firmB 2013-03-01 100 firmB 2013-04-01 100 firmB 2013-05-01 100 firmB 2013-07-01 100 firmB 2013-08-01 100 firmB 2013-09-01 100 firmB 2013-10-01 100 ;;;; proc expand data=time1 out=time2 method=none from=month to=month ; id date; run; proc expand data=time2 out=time3 method=none from=month to=month ; id date; convert return = roll3 / transformout=(nomiss movsum 3); convert return = roll4 / transformout=(nomiss movsum 4); run; ...After the first proc expand the log reports several warnings about omitted observations and an error, as follows... WARNING: 1 observations have been omitted before observation number 2 in data set WORK.TIME1 according to the FROM=MONTH specification and the ID variable values. The current ID is date=2013M01, the previous is date=2012M11. WARNING: 1 observations have been omitted before observation number 7 in data set WORK.TIME1 according to the FROM=MONTH specification and the ID variable values. The current ID is date=2013M07, the previous is date=2013M05. ERROR: The data set WORK.TIME1 is not sorted by the ID variable. At observation number 11, date= 2012M11, but date=2013M10 for the previous observation. NOTE: The SAS System stopped processing this step because of errors. WARNING: The data set WORK.TIME2 may be incomplete. When this step was stopped there were 0 observations and 3 variables. NOTE: PROCEDURE EXPAND used (Total process time): real time 0.01 seconds cpu time 0.01 seconds The data set Time2 then has 0 observations, as does Time3. How can the code be modified to restrict the rolling sum to each firm? Also, could you briefly explain the logic of using two proc expand statements rather than one?
... View more