BookmarkSubscribeRSS Feed
1162
Calcite | Level 5
I'm trying to find a procedure in SAS that produces percentiles according to the formula 100*(n-1)/N-1 where n is the rank score and N is the total number of observations.

For example, suppose I have three values: 10, 40, and 50. MS Excel calculates the percentiles as 0%, 50%, and 100%. Using the PROC RANK procedure, I get percentiles of 33%, 66% and 100% using the PERCENT option or 25%, 50%, and 75% using the NPLUS1 or GROUPS=100 option.

Am I missing something? Do I have to code this in a DATA step to get what I'm looking for?
2 REPLIES 2
data_null__
Jade | Level 19
It would appear that you can call 10 the 0th or 25th percentile or anything in between and up to the 33rd. Which I suppose makes since with N=3.

[pre]
data have;
input y @@;
cards;
10 40 50
;;;;
run;
proc univariate noprint;
output out=pct PCTLPRE=pct PCTLPTS=0 to 100 by 1;
run;
proc transpose;
run;
proc print;
run;
[/pre]
1162
Calcite | Level 5
I'm not sure I understand the utility of this solution. The output assigns the value 10 to all percentiles between 0% and 33%. I would expect the 10 value to be assigned just to 0%. Using the formula in my first post, the percentile would be 0% and not any other values. The second value, 40, would be assigned a percentile of 50%, not all the percentiles between 34% and 66%.

sas-innovate-white.png

🚨 Early Bird Rate Extended!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Lock in the best rate now before the price increases on April 1.

Register now!

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 2508 views
  • 0 likes
  • 2 in conversation