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;
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."
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.