Hi @RedUser77
I know you have multiple answers to go through, and here is yet another one
data have;
infile CARDS4;
input date yymmdd8. Record_Number;
format date yymmdd10.;
cards4;
20230101 10
20230102 245
20230121 39
20230201 11
20230202 202
20230301 41
20230321 59
20230302 92
;;;;
run;
/* Create a view to add the month variable */
DATA HAVE_V/VIEW=HAVE_V;
set have;
month = put(date,yymon8.);
RUN;
/* Use the DOW loop to calculate monthly totals and Percent changes */
DATA WANT(KEEP=MONTH MON_TOT PCT_CHANGE);
mon_tot = 0;
prev_mon_tot = 0;
/* calculate monthly totals */
DO UNTIL (LAST.MONTH);
SET HAVE_V;
BY MONTH NOTSORTED;
mon_tot + Record_Number;
END;
/* calculate monthly Percent changes */
prev_mon_tot = lag(mon_tot);
pct_change = ifn((prev_mon_tot > 0),100*((mon_tot - prev_mon_tot)/(prev_mon_tot)),0);
OUTPUT;
FORMAT pct_change 8.2;
RUN;
Note: this solution assumes the original input table/dataset is ordered by date.
Hope this helps,
Ahmed
... View more