[R] help with nesting if else statements

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Thu Sep 24 09:13:15 CEST 2020


Hi

instead of complicated ifelse construction  I would try perform the task in
several steps

# make a new column
test$new <- NA

# select CURRELIG and RTNPTHY and set new to 1
test$new[which(test$CURRELIG==1 & test$RTNPTHY==1)] <- 1

# select CURRELIG and PLASER and set new to 2
test$new[which(test$CURRELIG==1 & test$PLASER==2)] <- 2

> test
       FID   IID CURRELIG PLASER RTNPTHY new
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  NA
5  fam5621 G5621        1      1       1   1
6  fam5624 G5624        1      1       2  NA
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

Cheers
Petr

> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of Ana Marija
> Sent: Wednesday, September 23, 2020 6:44 PM
> To: r-help <r-help using r-project.org>
> Subject: [R] help with nesting if else statements
> 
> 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.


More information about the R-help mailing list