Calculating Percentiles with SAS

In SAS, you can calculate percentiles using PROC UNIVARIATE procedure.

Important options used for calculating percentile in PROC UNIVARIATE

1. PCTLPTS : Specifies percentile levels
2. PCTLPRE : Specifies one or more prefixes to create the variable names for the variables that contain the PCTLPTS= percentiles.
3. PCTLNAME : Specifies one or more suffixes to create the variable names for the variables that contain the PCTLPTS= percentiles.
Example 1 : Percentile calculation for a variable

The following SAS code calculates the 90th and 99.5th percentile of variable 'a' from the dataset 'abcd' and saves the result to a dataset named 'outdata'.

```proc univariate data = abcd noprint;
var a;
output out=outdata PCTLPTS = 90 99.5 PCTLPRE = a;
run;
```
Example 2 : Percentile calculation for multiple variables

The following SAS code calculates the 99th percentile of variable 'a', 'b' and 'c' from the dataset 'abcd' and saves the result to a dataset named 'outdata'.

```proc univariate data = abcd noprint;
var a b c;
output out=outdata PCTLPTS = 99 PCTLPRE = a b c PCTLNAME = _P99;
run;```

Important Points :

1. If you specify 3 variables in var statement (var a b c) and only 1 prefix in PCTPRE, SAS will create percentile for only 1 variable that is mentioned first in the var statement.
2. If the number of PCTLNAME= values is fewer than the number of percentiles or if you omit PCTLNAME=, PROC UNIVARIATE uses the percentile as the suffix to create the name of the variable that contains the percentile.
Example 3 : Series of percentile levels

The following SAS code calculates percentiles from 0 to 5 by 0.5 increments and from 95 to 100 by 0.5 increments for variable 'c' from the dataset 'abcd' and saves the result to a dataset named 'outdata'.

```proc univariate data = abcd noprint;
var c;
output out=outdata PCTLPTS = 0 to 5 by 0.5 , 95 to 100 by 0.5 PCTLPRE = P;
run;
```
How to Get Percentiles in a Tabular Format

The PROC STDIZE procedure is used to find out percentiles in a tabular format. You don't need to specify prefix as original variable names will be used in the output dataset.

```proc stdize data=sashelp.class PctlMtd=ORD_STAT outstat=outdata pctlpts=5,95;
var height weight;
run;
```
Related Posts