## Proc univariate: save value of 99th percentile

Hi,

I want to obtain a numerical value for the 99th percentile to use later in a data step. I think it can be done in a number of ways, but ulitmately I am winsorizing my cohort. I.e., for anyone with costs greater than the 99th percentile, set their cost equal to the 99th percentile value.

This is what i have so far:

proc univariate data = mydata;
where age_18 = 1;
class &var1;
var cost;
run;

/* --> I want out output the 1st and 99th percentile values. Where do I "output" this value? I dont necessarily need a whole data set, just 1 number.*/

data mydata2;

set mydata;

if cost > {99th percentile value} then cost_2 = {99th percentile value};

if cost < {1st percentile value} then cost_2 = {1st percentile value;

run;

2 REPLIES 2

## Re: Proc univariate: save value of 99th percentile

Hi:
The SAS Documentation for PROC UNIVARIATE seems to have a relevant example on how to save percentiles into an output dataset:
http://support.sas.com/documentation/cdl/en/procstat/67528/HTML/default/viewer.htm#procstat_univaria...

And then, once you have the percentiles in an output dataset, you could make macro variables that can be used in subsequent steps.

cynthia

## Re: Proc univariate: save value of 99th percentile

As Cynthia says, use the OUTPUT statement and specify the P1= and P99= keywords:

``````proc univariate data=sashelp.cars noprint;
class origin;
var MPG_City;
output out=PctlOut P1=P1 P99=P99;
run;

proc print; run;``````

You could also use PROC MEANS with the same syntax.

If you have multiple variables, see the article "Output percentiles of multiple variables in a tabular format."

Discussion stats
• 2 replies
• 4953 views
• 2 likes
• 3 in conversation