[R] help with nesting if else statements
Bert Gunter
bgunter@4567 @end|ng |rom gm@||@com
Wed Sep 23 21:09:29 CEST 2020
Nested ifelse()'s are confusing and invite error.
Just use ?within and subscript with your conditions:
dat$PHENO <- NA ## initialize PHENO
> dat <- ## to return the modified result
within(dat, {
+ PHENO[CURRELIG ==1] <- 1
+ PHENO[CURRELIG == 1 & PLASER == 2] <- 2
+ PHENO[CURRELIG == 1 & RTNPTHY == 1] <- 1
+ })
> dat
FID IID CURRELIG PLASER RTNPTHY PHENO
1 fam5610 G5610 1 1 1 1
2 fam5614 G5614 1 2 2 2
3 fam5615 G5615 1 1 1 1
4 fam5618 G5618 1 1 2 1
5 fam5621 G5621 1 1 1 1
6 fam5624 G5624 1 1 2 1
7 fam5625 G5625 1 1 1 1
8 fam5628 G5628 1 2 2 2
9 fam5633 G5633 1 2 2 2
10 fam5634 G5634 1 1 1 1
11 fam5635 G5635 2 2 2 NA
12 fam5636 G5636 1 1 1 1
13 fam5641 G5641 1 1 1 1
14 fam5645 G5645 2 1 2 NA
15 fam5646 G5646 2 2 2 NA
16 fam5654 G5654 1 2 2 2
17 fam5655 G5655 1 2 2 2
18 fam5656 G5656 2 2 2 NA
19 fam5658 G5658 1 1 1 1
20 fam5659 G5659 2 2 2 NA
21 fam5660 G5660 1 1 1 1
22 fam5661 G5661 2 2 2 NA
23 fam5664 G5664 1 1 1 1
24 fam5666 G5666 1 1 1 1
25 fam5667 G5667 1 1 2 1
26 fam5670 G5670 1 1 1 1
27 fam5671 G5671 1 1 2 1
28 fam5672 G5672 1 1 2 1
29 fam5673 G5673 1 1 1 1
30 fam5680 G5680 1 2 2 2
31 fam5686 G5686 1 2 2 2
32 fam5687 G5687 1 2 2 2
33 fam5688 G5688 1 1 2 1
34 fam5693 G5693 2 1 1 NA
35 fam5695 G5695 1 1 1 1
36 fam5697 G5697 1 1 1 1
37 fam5700 G5700 1 2 2 2
38 fam5701 G5701 1 1 1 1
39 fam5706 G5706 1 1 2 1
40 fam5709 G5709 1 1 1 1
41 fam5713 G5713 1 1 1 1
42 fam5715 G5715 1 1 1 1
43 fam5718 G5718 1 1 1 1
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 Wed, Sep 23, 2020 at 9:44 AM Ana Marija <sokovic.anamarija using gmail.com>
wrote:
> Hello,
>
> I have a data frame as shown bellow.
> I want to create a new column PHENO which will be defined as follows:
> if CURRELIG==1 -> PHENO==1
> in the above subset those that have:
> PLASER==2 -> PHENO==2
> and
> those where RTNPTHY==1 -> PHENO==1
>
> I tried doing this:
> a$PHENO=ifelse(a$CURRELIG==1 | a$RTNPTHY==1 ,1,ifelse(a$PLASER==2 |
> a$RTNPTHY==2,2,NA))
>
> but this give me some lines where I am not seeing results that I want,
> for example:
> FID IID CURRELIG PLASER RTNPTHY PHENO
> fam5628 G5628 1 2 2 1
>
> here the PHENO should be =2 because RTNPTHY==2 and PLASER==2
> PHENO should be ==2 when either RTNPTHY==2 or PLASER==2
>
> another wrong line is this:
> FID IID CURRELIG PLASER RTNPTHY PHENO
> fam5706 G5706 1 1 2 1
>
> again RTNPTHY ==2 and PHENO==1 instead of 2.
>
> My data looks like this:
> FID IID CURRELIG PLASER RTNPTHY
> fam5610 G5610 1 1 1
> fam5614 G5614 1 2 2
> fam5615 G5615 1 1 1
> fam5618 G5618 1 1 2
> fam5621 G5621 1 1 1
> fam5624 G5624 1 1 2
> fam5625 G5625 1 1 1
> fam5628 G5628 1 2 2
> fam5633 G5633 1 2 2
> fam5634 G5634 1 1 1
> fam5635 G5635 2 2 2
> fam5636 G5636 1 1 1
> fam5641 G5641 1 1 1
> fam5645 G5645 2 1 2
> fam5646 G5646 2 2 2
> fam5654 G5654 1 2 2
> fam5655 G5655 1 2 2
> fam5656 G5656 2 2 2
> fam5658 G5658 1 1 1
> fam5659 G5659 2 2 2
> fam5660 G5660 1 1 1
> fam5661 G5661 2 2 2
> fam5664 G5664 1 1 1
> fam5666 G5666 1 1 1
> fam5667 G5667 1 1 2
> fam5670 G5670 1 1 1
> fam5671 G5671 1 1 2
> fam5672 G5672 1 1 2
> fam5673 G5673 1 1 1
> fam5680 G5680 1 2 2
> fam5686 G5686 1 2 2
> fam5687 G5687 1 2 2
> fam5688 G5688 1 1 2
> fam5693 G5693 2 1 1
> fam5695 G5695 1 1 1
> fam5697 G5697 1 1 1
> fam5700 G5700 1 2 2
> fam5701 G5701 1 1 1
> fam5706 G5706 1 1 2
> fam5709 G5709 1 1 1
> fam5713 G5713 1 1 1
> fam5715 G5715 1 1 1
> fam5718 G5718 1 1 1
>
> Please advise,
> Ana
>
> ______________________________________________
> R-help using 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]]
More information about the R-help
mailing list