Help using Base SAS procedures

Proc univariate: save value of 99th percentile

Reply
New Contributor
Posts: 3

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; 

SAS Super FREQ
Posts: 8,868

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
SAS Super FREQ
Posts: 3,755

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."

Ask a Question
Discussion stats
  • 2 replies
  • 701 views
  • 1 like
  • 3 in conversation