Hi: Try this:
f <- function(x) ifelse(sum(x > 0) == 1L, names(which(x > 0)), NA) g <- function(x) ifelse(sum(x > 0) == 2L, names(which(x == 0L)), NA) > apply(df1[, 3:5], 1, f) [1] "ANN" "CTA" "GLM" NA "ANN" NA NA NA NA "CTA" > apply(df1[, 3:5], 1, g) [1] NA NA NA NA NA NA "GLM" "CTA" NA NA HTH, Dennis On Wed, Jan 26, 2011 at 9:36 PM, Daisy Englert Duursma < daisy.duur...@gmail.com> wrote: > Hello, > > I am not sure where to begin with this problem or what to search for > in r-help. I just don't know what to call this. > > If I have 5 columns, the first 2 are the x,y, locations and the last > three are variables about those locations. > > x<-seq(1860,1950,by=10) > y<-seq(-290,-200,by=10) > ANN<-c(3,0,0,0,1,0,1,1,0,0) > CTA<-c(0,1,0,0,0,0,1,0,0,2) > GLM<-c(0,0,2,0,0,0,0,1,0,0) > df1<-as.data.frame(cbind(x,y,ANN,CTA,GLM)) > > What I would like to produce is an additional column that tells when > only 1 of the three variables has a value greater than 0. I would like > this new column to give the name of the variable. Likewise, I would > like a column that tells one only one of the three variables for a > given row has a value of 0. For my example the new columns would be: > > one_presence<-c("ANN","CTA","GLM","NA","ANN","NA","NA","NA","NA","CTA") > one_absence<-c("NA","NA","NA","NA","NA","NA","GLM","CTA","NA","NA") > > The end result should look like > > df2<-(cbind(df1,one_presence,one_absence)) > > I am sure I can do this with a loop or maybe grep but I am out of ideas. > > Any help would be appreciated. > > Cheers, > Daisy > > -- > Daisy Englert Duursma > > Room E8C156 > Dept. Biological Sciences > Macquarie University NSW 2109 > Australia > > ______________________________________________ > 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. > [[alternative HTML version deleted]] ______________________________________________ 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.