Dear MKeintz, It doesn't work. The error that I get is ERROR: Array subscript out of range at line 39 column 41. If I break the code into two and run the first part: data Want (drop=sum_ix index); set Have ; by region_name notsorted; array ix_mean {2016:2018,1:12} m2016_01-m2016_12 m2017_01-m2017_12 m2018_01-m2018_12 ; retain m20: sum_ix; run; Then I get a huge data set that has all the date range you created in the columns (see attached). The dataset has 23k records (as many as my observation and then columns as many as you have defined (36 I think). Once I run the second part: data WANT_1 ; set WANT; if first.region_name then call missing(sum_ix,of ix_mean{*}); sum_ix + index - coalesce(lag5(index),0); if lag4(region_name)=region_name then ix_mean{year(date),month(date)}=sum_ix/5; if last.region_name; run; Then I get more specific errors: 44 data WANT_1 47 ; set WANT; 49 if first.region_name then call missing(sum_ix,of ix_mean{*}); ERROR: Undeclared array referenced: ix_mean. ERROR: The ARRAYNAME[*] specification requires an array. 50 sum_ix + index - coalesce(lag5(index),0); 51 52 if lag4(region_name)=region_name then ix_mean{year(date),month(date)}=sum_ix/5; ERROR: Undeclared array referenced: ix_mean. ERROR: Variable ix_mean has not been declared as an array. 53 if last.region_name; 54 run; I am not familiar with working with arrays to be honest so this issue with "undeclared array" is an odd one for me - as I can see that you have declared it in: array ix_mean {2016:2018,1:12} m2016_01-m2016_12 m2017_01-m2017_12 m2018_01-m2018_12 ; retain m20: sum_ix; Any idea what is going wrong...? BTW - my data has no missing observations. Thank you fro your help! Edo
... View more