# How to Calculate a Moving Average in SAS

In statistics, a moving average represents the average of the previous n values in a dataset.

The easiest way to calculate a moving average in SAS is to use the proc expand statement.

The following example shows how to use this statement in practice.

## Example: Calculate a Moving Average in SAS

Suppose we create the following dataset in SAS:

```/*create dataset*/
data original_data;
input time values;
datalines;
1 7
2 12
3 14
4 12
5 16
6 18
7 11
8 10
9 14
10 17
;
run;

/*view dataset*/
proc print data=original_data;
``` Now suppose we would like to calculate a 3-period moving average for the values column.

We can use proc expand to do so:

```/*calculate 3-period moving average for values*/
proc expand data=original_data out=out_data method=none;
id time;
convert values = values_ma3 / transout=(movave 3);
run;

/*view results*/
proc print data=out_data;``` The new column called values_ma3 displays the 3-period moving average for the values column.

For example, the third value in the values_ma3 column represents the average of the previous 3 periods:

• Moving Average = (7+12+14) / 3 = 11.0000

The fourth value in the values_ma3 column represents the average of the previous 3 periods as well:

• Moving Average = (12+14+12) / 3 = 12.6667

And so on.

To calculate the moving average for a different number of periods, simply change the value after movave in the code.

For example, we could use the following code to calculate a 4-period moving average for the values column:

```/*calculate 4-period moving average for values*/
proc expand data=original_data out=out_data method=none;
id time;
convert values = values_ma4 / transout=(movave 4);
run;

/*view results*/
proc print data=out_data;``` The new column called values_ma4 displays the 4-period moving average for the values column.