Skip to content

recategorizing a vector into discrete states

3 messages · Allan Strand, Achim Zeileis, Marc Schwartz (via MN)

#
Hi All,

I'm trying to take a numerical vector  and  produce a new vector of the 
same length where each element in the first is placed into a category 
given by a 'breaks-like' vector. The values in the result should equal 
the lower bounds of each category as defined in the breaks vector.

  I suspect that a vectorized solution  is pretty simple, but I can't 
seem to figure it out today.  Here is an example of my problem:

Vector 'a' is the original vector.  Vector 'b' gives the lower bounds 
of the categories.  Vector 'c' is the result I am seeking.

a <- c(0.9, 11, 1.2, 2.4, 4.0, 5.0, 7.3, 8.1, 3.3, 4.5)
b <- c(0, 2, 4, 6, 8)

c <- c(0, 8, 0, 2, 4, 4, 6, 8, 2, 4)

Any suggestions would be greatly appreciated.

cheers,
Allan Strand
#
On Tue, 16 Aug 2005 13:18:23 -0400 Allan Strand wrote:

            
cut(a, c(b, Inf), labels = b)

which returns a factor.
Z
#
On Tue, 2005-08-16 at 13:18 -0400, Allan Strand wrote:
See ?cut
[1] 0 8 0 2 4 4 6 8 2 4
Levels: 0 2 4 6 8

Note that cut() returns a factor.

HTH,

Marc Schwartz