Thanks. It works :) Shuguang
On Wed, Nov 5, 2008 at 12:24 AM, Marc Schwartz <[EMAIL PROTECTED]> wrote: > The easiest way is probably to use interaction(): > >> df > factorA factorB > 1 0 0 > 2 0 0 > 3 1 0 > 4 0 1 > 5 1 1 > > > # Note the default separator of '.' > df$factorC <- with(df, interaction(factorA, factorB)) > >> df > factorA factorB factorC > 1 0 0 0.0 > 2 0 0 0.0 > 3 1 0 1.0 > 4 0 1 0.1 > 5 1 1 1.1 > > > If you want numeric values, you can adjust as follows: > > df$factorC <- factor(as.numeric(df$factorC) - 1) > >> df > factorA factorB factorC > 1 0 0 0 > 2 0 0 0 > 3 1 0 1 > 4 0 1 2 > 5 1 1 3 > > > The latter step takes advantage of the underlying numeric nature of the > factor levels and subtracts 1, since they are 1 based, not 0 based. > > See ?interaction > > HTH, > > Marc Schwartz > > > on 11/04/2008 10:10 AM Jorge Ivan Velez wrote: >> Dear Shuguang, >> Here are two ways. Perhaps they are not efficient enough, but the work: >> >> >> # Data >> mydata=read.table(textConnection(" >> factorA factorB >> 0 0 >> 0 0 >> 1 0 >> 0 1 >> 1 1"),header=TRUE) >> closeAllConnections() >> >> # Option 1 >> mydata$factorC=as.factor( >> apply(mydata,1,function(x){ >> paste(x,sep="",collapse="") >> } >> )) >> levels(mydata$factorC)<-list("0"="00", "1"="10", "2"="01","3"="11") >> mydata >> >> # Option 2 >> # You'll need to read the data again to see how this option works >> mydata$factorC<-apply(mydata,1,function(x){ >> ifelse(sum(x)==0,0, >> ifelse(x[1]==1 & x[2]==0,1, >> ifelse(x[1]==0 & x[2]==1,2,3))) >> } >> ) >> >> mydata >> >> >> HTH, >> >> >> Jorge >> >> >> >> On Tue, Nov 4, 2008 at 10:29 AM, Shuguang Sun <[EMAIL PROTECTED]> wrote: >> >>> How to generate a new factor variable by two other factor variables? >>> >>> For example, if I have two factor variables, factorA and factorB, >>> factorA factorB >>> 0 0 >>> 0 0 >>> 1 0 >>> 0 1 >>> 1 1 >>> >>> Is there a simple way to generate a new 4-levels factor variable as >>> >>> factorC factorA factorB >>> 0 0 0 >>> 0 0 0 >>> 1 1 0 >>> 2 0 1 >>> 3 1 1 >>> >>> -- >>> Shuguang Sun >>> Fudan University, China >>> > ______________________________________________ R-help@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.