[R] indexing a vector

Marc Schwartz MSchwartz at medanalytics.com
Thu Oct 2 21:36:19 CEST 2003


On Thu, 2003-10-02 at 12:40, morozov wrote:
> Dear All:
> I'd like to know how to sort and then index a vector of floats by several 
> levels in R.
> For example
> 
> 
> >x<-rnorm(100)
> > MyLevels<-quantile(x,probs=c(0,.5,1))
> > MyLevels
>          0%         50%        100% 
> -2.11978442 -0.03770613  2.00186397
> 
> next i want to replace each x[i] in x by 1,2,3 or 4 depending on which 
> quantile that x[i] falls. How do I do that in a "vector" fashion?
> 
> I tried something like
> 
> >factor(x,levels=as.numeric(MyLevels))
> 
> but that doesnt work.
> 
> 
> Thank you very much,
> Vlad


You might want to look at ?cut, which returns a factor based upon
defining breakpoints in a continuous vector. You can break the vector
'x' and relabel the levels to give you what you need.

For example:

x <- rnorm(100)

MyLevels <- factor(cut(x, quantile(x), include.lowest = TRUE), 
                   labels = 1:4)

table(MyLevels)
MyLevels
 1  2  3  4
25 25 25 25

HTH,

Marc Schwartz




More information about the R-help mailing list