[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