[R] R function for percentrank
John Kane
jrkrideau at yahoo.ca
Sat Dec 1 20:58:34 CET 2007
--- David Winsemius <dwinsemius at comcast.net> wrote:
> "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.)
>
Excel
x percentrank(x)
1 0
1 0
3 0.222
3 0.222
4 0.444
5 0.555
6 0.666
7 0.777
10 1
9 0.888
It seems that OOo is following Excel's distinguished
footsteps.
How can one have a 0 percentile ranking?
> --
> 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,
> >> >
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained,
> reproducible code.
>
Looking for the perfect gift? Give the gift of Flickr!
More information about the R-help
mailing list