[R] Getting the index of specific quantiles

Sarah Goslee sarah.goslee at gmail.com
Tue Nov 22 15:18:15 CET 2016


Here's how to get one:

x <- c(9,9,1,3,2,7,6,10,5,6)
> which.min(abs(x - quantile(x, .25)))
[1] 4

And here's one of the various ways to get the entire set:

> xq <- quantile(x)
> sapply(xq, function(y)which.min(abs(x - y)))
  0%  25%  50%  75% 100%
   3    4    7    1    8

Sarah

On Tue, Nov 22, 2016 at 7:21 AM, Matteo Richiardi
<matteo.richiardi at gmail.com> wrote:
> Dear R-users,
> a very easy one for you, I guess. I need to extract the indexes of the
> elements corresponding to different quantiles of a vector. When a
> quantile is an interpolation between two adjacent values, I need the
> index of the value which is closer (the lower value - or the higher
> value for what matters - in case the quantile is exactly half way
> through).
>
> This is an example.
>
>> x <- c(9,9,1,3,2,7,6,10,5,6)
>> quantile(x)
>   0%  25%  50%  75% 100%
>  1.0  3.5  6.0  8.5 10.0
>
> What I need is a vector 'index' which looks like
>
>> index
> 3   4   7   1   8
>
> Many thanks for your help ! Matteo
>
-- 
Sarah Goslee
http://www.functionaldiversity.org



More information about the R-help mailing list