o.mannion at auckland.ac.nz
2010-Mar-01 22:03 UTC
[R] Generating variable from 2 others in dataframe
Suppose I have the following dataframe called test: test<-data.frame(year=rep(1990:2003,5),id=gl(5,length(1990:2003)),eif=as.vector(sapply(1:5,function(z){a<-rep(0,length(1990:2003));a[sample(1:length(1990:2003),sample(1:2,1))]<-1;a}))) year id eif 1990 1 0 1991 1 0 1992 1 0 2000 1 1 1994 1 0 1995 1 0 2001 1 0 1997 1 1 .... I want to create a new variable in this dataframe called "hhtype" according to the logic: If eif==1, hhtype = 1 Else if year < 2000, hhtype = 2 Else hhtype = 3 The result would be year id eif hhtype 1990 1 0 2 1991 1 0 2 1992 1 0 2 2000 1 1 1 1994 1 0 2 1995 1 0 2 2001 1 0 3 1997 1 1 1 I think I can do this with some combination of apply and ifelse, but so far have not succeeded in putting it all together. Any help would be very much appreciated! Thankyou, Oliver
You have to nest the ifelse's: test$hhtype <- with(test, ifelse(eif==1,1,ifelse(year<2000,2,3))) Bert Gunter Genentech Nonclinical Biostatistics -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of o.mannion at auckland.ac.nz Sent: Monday, March 01, 2010 2:03 PM To: 'r-help at r-project.org' Subject: [R] Generating variable from 2 others in dataframe Suppose I have the following dataframe called test: test<-data.frame(year=rep(1990:2003,5),id=gl(5,length(1990:2003)),eif=as.vec tor(sapply(1:5,function(z){a<-rep(0,length(1990:2003));a[sample(1:length(199 0:2003),sample(1:2,1))]<-1;a}))) year id eif 1990 1 0 1991 1 0 1992 1 0 2000 1 1 1994 1 0 1995 1 0 2001 1 0 1997 1 1 .... I want to create a new variable in this dataframe called "hhtype" according to the logic: If eif==1, hhtype = 1 Else if year < 2000, hhtype = 2 Else hhtype = 3 The result would be year id eif hhtype 1990 1 0 2 1991 1 0 2 1992 1 0 2 2000 1 1 1 1994 1 0 2 1995 1 0 2 2001 1 0 3 1997 1 1 1 I think I can do this with some combination of apply and ifelse, but so far have not succeeded in putting it all together. Any help would be very much appreciated! Thankyou, Oliver ______________________________________________ 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.