[R] writing a categorical var. with condition

Marc Schwartz marc_schwartz at comcast.net
Fri Nov 2 21:46:36 CET 2007


On Fri, 2007-11-02 at 22:02 +0200, sigalit mangut-leiba wrote:
> Hello,
> I want to create a new variable which includes 4 age categories in this way:
> 
> if (age>=12 && age<32) age1==1
> 
> if (age>=32 && age<52) age1==2
> 
> if (age>=52 && age<72) age1==3
> 
> if (age>=72 && age<100) age1==4
> 
> but I get the results only for the first observation.
> 
> how can I apply this condition to all observations?
> 
> Thanks in advance,
> 
> Sigalit.

The if() function can only return a single result, so you would have to
create something along the lines of an if...else construct.

Alternatively, you can use cut():

age <- 12:99

> cut(age, breaks = c(12, 32, 52, 72, 100), labels = 1:4, include.lowest = TRUE) 
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2
[35] 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4
[69] 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
Levels: 1 2 3 4


Note that this returns a factor. If you want an actual integer value,
you would have to coerce the result.

See ?cut for more information.

HTH,

Marc Schwartz



More information about the R-help mailing list