I generally find nested ifelse's to be confusing and prone to error, so I usually prefer to proceed sequentially using subsetting with logicals or replicated, but not nested ifelse's. In your example, the translation to logical indexing seems pretty straightforward.
Using your example: > dat2 <-within(dat2, { d4 <- d1 ## d1. 0 when d1 == 0 d4[!d4]<- d2[!d4] d4[!d4]<- d3[!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 Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) 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. > [[alternative HTML version deleted]] ______________________________________________ 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.