[R] R function for percentrank

David Winsemius dwinsemius at comcast.net
Sat Dec 1 19:40:14 CET 2007


David Winsemius <dwinsemius at comcast.net> wrote in 
news:Xns99F989B3A3057dNOTwinscomcast at 80.91.229.13:

> "tom soyer" <tom.soyer at gmail.com> wrote in
> news:65cc7bdf0712010951p451a993i70da89f285d801de at mail.gmail.com: 
> 
>> John,
>> 
>> The Excel's percentrank function works like this: if one has a number,
>> x for example, and one wants to know the percentile of this number in
>> a given data set, dataset, one would type =percentrank(dataset,x) in
>> Excel to calculate the percentile. So for example, if the data set is
>> c(1:10), and one wants to know the percentile of 2.5 in the data set,
>> then using the percentrank function one would get 0.166, i.e., 2.5 is
>> in the 16.6th percentile. 
>> 
>> I am not sure how to program this function in R. I couldn't find it as
>> a built-in function in R either. It seems to be an obvious choice for
>> a built-in function. I am very surprised, but maybe we both missed it.
>  
> My nomination for a function with a similar result would be ecdf(), the 
> empirical cumulative distribution function. It is of class "function" 
so 
> efforts to index ecdf(.)[.] failed for me.
> 
>> df4$V2
> [1] 1 1 1 1 1 5 6 7 9          #copied wrong line in R session

Make that;
df4$V2<-c(1,1,3,3,4,5,6,7,10,9)
[1] 1 1 3 3 5 6 7 9

>> ecdf.V2<-ecdf(df4$V2)
>> ecdf.V2(df4$V2)
>  [1] 0.2 0.2 0.4 0.4 0.5 0.6 0.7 0.8 1.0 0.9
> 
> Don't have Excel, but the OpenOffice.org Calc program has the same 
> function. It produces:
> x    percentrank(x)
> 1     0.0000000
> 1     0.0000000
> 3     0.2222222
> 3     0.2222222
> 4     0.4444444
> 5     0.5555556
> 6     0.6666667
> 7     0.7777778
> 10     1.0000000
> 9     0.8888889
> 
> (Not that I am saying that the OO.o/Excel function is what one _should_ 
> want. Its behavior seems pathological to me.)
>



More information about the R-help mailing list