Hi Val, Here's an answer using a series of ifelse() statements. Because the d4 column is created initially using NA as a placeholder, you can check your conditional logic at the end using table(!is.na(dat2$d4)):
> dat2 <-read.table(text="ID d1 d2 d3 + A 0 25 35 + B 12 22 0 + C 0 0 31 + E 10 20 30 + F 0 0 0", header=TRUE, stringsAsFactors=F) > > dat2$d4 <- NA > dat2$d4 <- with(dat2, ifelse(d1!=0, yes=d1, no=d4)) > dat2$d4 <- with(dat2, ifelse((d1==0 & d2!=0), yes=d2, no=d4)) > dat2$d4 <- with(dat2, ifelse((d1==0 & d2==0 & d3!=0), yes=d3, no=d4)) > dat2$d4 <- with(dat2, ifelse((d1==0 & d2==0 & d3==0), yes=0, no=d4)) > > dat2 ID d1 d2 d3 d4 1 A 0 25 35 25 2 B 12 22 0 12 3 C 0 0 31 31 4 E 10 20 30 10 5 F 0 0 0 0 > > table(!is.na(dat2$d4)) TRUE 5 > Your particular conditionals don't appear sensitive to order, but someone else using the same strategy may have to take care to run the ifelse() statements in the correct (desired) order. HTH, Bill. W. Michels, Ph.D. On Tue, Nov 26, 2019 at 3:15 PM Val <valkr...@gmail.com> wrote: > > HI All, I am having a little issue in my ifelse statement, > The data frame looks like as follow. > > dat2 <-read.table(text="ID d1 d2 d3 > A 0 25 35 > B 12 22 0 > C 0 0 31 > E 10 20 30 > F 0 0 0",header=TRUE,stringsAsFactors=F) > I want to create d4 and set the value based on the following conditions. > If d1 !=0 then d4=d1 > if d1 = 0 and d2 !=0 then d4=d2 > if (d1 and d2 = 0) and d3 !=0 then d4=d3 > if all d1, d2 and d3 =0 then d4=0 > > Here is the desired output and my attempt > ID d1 d2 d3 d4 > A 0 25 35 25 > B 12 22 0 12 > C 0 0 31 31 > E 10 20 30 10 > F 0 0 0 0 0 > > My attempt > dat2$d4 <- 0 > dat2$d4 <- ifelse((dat2$d1 =="0"), dat2$d2, ifelse(dat2$d2 == "0"), dat2$d3, > 0) > but not working. > > Thank you. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.