[R] R function for percentrank
David Winsemius
dwinsemius at comcast.net
Sat Dec 1 19:32:10 CET 2007
"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
> 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.)
--
David Winsemius
>
> On 12/1/07, John Kane <jrkrideau at yahoo.ca> wrote:
>>
>> I don't see one but that means nothing. I think you
>> can write such a function in a few minutes
>>
>> Will something like this work or am I
>> missunderstanding what Excel's percentrank does ?
>>
>> aa <- rnorm(25); aa # data vector
>> percentrank <- function(x) {
>> var <- sort(x)
>> p.rank <- 1:length(var)/length(var)*100
>> dd <- cbind(var,p.rank)
>> }
>> pr <- percentrank(aa); pr
>>
>>
>> --- tom soyer <tom.soyer at gmail.com> wrote:
>>
>> > Hi,
>> >
>> > Does anyone know if R has a built-in function that
>> > is equvalent to Excel's
>> > percentrank, i.e., returns the rank of a value in a
>> > data set as a percentage
>> > of the data set?
>> >
>> > Thanks,
>> >
More information about the R-help
mailing list