[R] How to fix my nested conditional IF ELSE code?

Chuck Cleland ccleland at optonline.net
Mon Jun 15 00:33:34 CEST 2009


On 6/14/2009 6:18 PM, Mark Na wrote:
> Hi,
> I've been struggling most of the morning with an IF ELSE problem, and I
> wonder if someone might be able to sort me out.
> 
> Here's what I need to do (dummy example, my data are more complicated):
> 
> If type = A or B or C
>      and status = a then count = 1
>      and status = b then count = 2
>      and status = c then count = 3
> 
> Else if type = D or E or F
>      and status = a then count = 9
>      and status = b then count = 8
>      and status = c then count = 7
> 
> End
> 
> Seems simple when I write it like that, but the R code is escaping me.

mydf <- data.frame(type = sample(LETTERS[1:6], 40, replace=TRUE),
                   status = sample(letters[1:3], 40, replace=TRUE))

mydf$count <- with(mydf,
                ifelse(type %in% c('A','B','C') & status == 'a', 1,
                ifelse(type %in% c('A','B','C') & status == 'b', 2,
                ifelse(type %in% c('A','B','C') & status == 'c', 3,
                ifelse(type %in% c('D','E','F') & status == 'a', 9,
                ifelse(type %in% c('D','E','F') & status == 'b', 8,
                ifelse(type %in% c('D','E','F') & status == 'c', 7,
NA)))))))

mydf
   type status count
1     C      c     3
2     F      b     8
3     B      b     2
4     A      a     1
5     C      b     2
6     D      c     7
7     C      a     1
8     E      c     7
9     F      a     9
10    E      b     8
11    F      a     9
12    D      a     9
13    A      c     3
14    B      b     2
15    D      b     8
16    C      c     3
17    E      c     7
18    A      c     3
19    B      a     1
20    E      a     9
21    E      b     8
22    E      a     9
23    C      b     2
24    A      b     2
25    F      b     8
26    D      a     9
27    B      c     3
28    E      b     8
29    E      c     7
30    F      b     8
31    B      a     1
32    F      c     7
33    F      b     8
34    E      c     7
35    C      b     2
36    C      a     1
37    F      b     8
38    D      c     7
39    F      a     9
40    D      b     8

> Thanks!
> 
> Mark Na
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code. 

-- 
Chuck Cleland, Ph.D.
NDRI, Inc. (www.ndri.org)
71 West 23rd Street, 8th floor
New York, NY 10010
tel: (212) 845-4495 (Tu, Th)
tel: (732) 512-0171 (M, W, F)
fax: (917) 438-0894




More information about the R-help mailing list