R function for percentrank
--- 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!