From: Marc Schwartz (via MN) <mschwartz_at_mn.rr.com>

Date: Wed 24 Aug 2005 - 02:28:40 EST

}

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Aug 24 02:33:57 2005

Date: Wed 24 Aug 2005 - 02:28:40 EST

On Tue, 2005-08-23 at 10:12 -0500, Greg Blevins wrote:

> Hello,

*>
**> I have struggled, for longer than I care to admit, with this seemingly
**> simple problem, but I cannot find a solution other than the use of
**> long drawn out ifelse statements. I know there has to be a better
**> way. Here is stripped down version of the situation:
**>
**> I start with:
**> a <- c(1,0,1,0,0,0,0)
**> b <- c(1,1,1,1,0,0,0)
**> c <- c(1,1,0,1,0,0,0)
**>
**> rbind(a,b,c)
**> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
**> a 1 0 1 0 0 0 0
**> b 1 1 1 1 0 0 0
**> c 1 1 0 1 0 0 0
**>
**> I refer to column 3 as the target column, which at the end of the day
**> will be NA in all instances.
**>
**> The logic involved:
**>
**> 1) If columns 2, 4 thru 7 do NOT include at least one '1', then recode
**> columns 2 thru 7 to NA and recode column 1 to code 2.
**>
**> 2) If columns 2, 4 thru 7 contain at least one '1', then recode column
**> 3 to NA.
**>
**> Desired recoding of the above three rows:
**> [,1] [,2] [,3] [,4] [,5] [,6] [,7]
**> a 2 NA NA NA NA NA NA
**> b 1 1 NA 1 0 0 0
**> c 1 1 NA 1 0 0 0
**>
**> Thanks you.
*

You left out one key detail in the explanation, which is that the recoding appears to be done on a row by row basis, not overall.

The following gets the job done, though there may be a more efficient approach:

> a <- c(1,0,1,0,0,0,0)

*> b <- c(1,1,1,1,0,0,0)
**> c <- c(1,1,0,1,0,0,0)
*

> d <- rbind(a, b, c)

*> d
*

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

a 1 0 1 0 0 0 0

b 1 1 1 1 0 0 0

c 1 1 0 1 0 0 0

> mod.row <- function(x)

{

if (all(x[c(2, 4:7)] == 0))

{

x[2:7] <- NA x[1] <- 2 } else { x[3] <- NA

}

x

}

> y <- t(apply(d, 1, mod.row))

*> y
*

[,1] [,2] [,3] [,4] [,5] [,6] [,7]

a 2 NA NA NA NA NA NA

b 1 1 NA 1 0 0 0

c 1 1 NA 1 0 0 0

**HTH,
**
Marc Schwartz

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Wed Aug 24 02:33:57 2005

*
This archive was generated by hypermail 2.1.8
: Sun 23 Oct 2005 - 15:46:59 EST
*