[R] quantile

(Ted Harding) Ted.Harding at manchester.ac.uk
Mon Sep 29 23:33:35 CEST 2008


On 29-Sep-08 20:09:14, liujb wrote:
> Hello,
> I need to assign a number to each x[i], i=1:100, based on the
> value of x[i] and where they are in the distribution of x[i].
> For example 1 for x[4] means x[4] is below 25%. I can obtain
> the quantile using quantile command, and just loop through the
> 1:100 and assign the correct number. But I was just wondering
> whether there are a more efficient way.
> 
> Thank you,
> sincerely,
> Julia

Well, you can certainly do it with a much shorter loop!

set.seed(31425)
x   <- rnorm(13)
x.v <- numeric(length(x))
ix  <- order(x)
Q <- quantile(x)
for(i in (5:2)){ x.v[x<=Q[i]] <- (i-1) }

cbind(x,x.v, x[ix],x.v[ix])
               x x.v             
 [1,] -0.7565336   2 -1.7045077 1
 [2,] -0.3287683   2 -1.0693801 1
 [3,] -1.7045077   1 -1.0671752 1
 [4,]  0.7259883   4 -0.9718954 1
 [5,]  0.6174724   3 -0.7565336 2
 [6,] -1.0693801   1 -0.3668566 2
 [7,]  1.9826596   4 -0.3287683 2
 [8,] -0.9718954   1  0.2491123 3
 [9,] -1.0671752   1  0.4733287 3
[10,] -0.3668566   2  0.6174724 3
[11,]  0.2491123   3  0.7259883 4
[12,]  0.4733287   3  1.9826596 4
[13,]  2.2095536   4  2.2095536 4

Hoping this helps,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 29-Sep-08                                       Time: 22:33:33
------------------------------ XFMail ------------------------------



More information about the R-help mailing list