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.

Reply via email to