SAS Tips: SAS sample statistic functions

You should be familiar with ‘variable lists’ before reading this page.

Sample statistics for a single variable across all observations are simple to obtain using, for example, PROC MEANS, PROC UNIVARIATE, etc. The simplest method to obtain similar statistics across several variables within an observation is with a ‘sample statistics function’.

For example:

sum_wt=sum(of weight1 weight2 weight3 weight4 weight5);

Note that this is equivalent to

sum_wt=sum(of weight1-weight5);

but is not equivalent to

sum_wt=weight1 + weight2 + weight3 + weight4 + weight5;

since the SUM function returns the sum of non-missing arguments, whereas the ‘+’ operator returns a missing value if any of the arguments are missing.

The following are all valid arguments for the SUM function:

sum(of variable1-variablen) where n is an integer greater than 1

sum(of x y z)

sum(of array-name{*})

sum(of numeric)

sum(of x–a) where x precedes a in the PDV order

A comma delimited list is also a valid argument, for example:

sum(x, y, z)

However, I recommend always using an argument preceded by OF, since this minimises the chance that you write something like

sum_wt=sum(weight1-weight5);

which is a valid SAS expression, but evaluates to the difference between weight1 and weight5.

Other useful sample statistic functions are:

MAX(argument,…) returns the largest value

MIN(argument,…) returns the smallest value

MEAN(argument,…) returns the arithmetic mean (average)

N(argument,….) returns the number of nonmissing arguments

NMISS(argument,…) returns the number of missing values

STD(argument,…) returns the standard deviation

STDERR(argument,…) returns the standard error of the mean

VAR(argument,…) returns the variance

Example usage

You may, for example, have collected weekly test scores over a 20 week period and wish to calculate the average score for all observations with the proviso that a maximum of 2 scores may be missing.

if nmiss(of test1-test20) le 2 then
 testmean=mean(of test1-test20);
else testmean=.;`

References

Function arguments: SAS Language, version 6, first edition, pages 50-51.

Functions: SAS Language, version 6, first edition, chapter 11, page 521.

Type ‘help functions’ in the command line to access the online help.

Index

Paul Dickman
Paul Dickman
Professor of Biostatistics

Biostatistician working with register-based cancer epidemiology.