indexing a vector
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