help with nesting if else statements
Hi Jeremie, when I try to reproduce your code this is what I get:
a=setDT(a) head(a)
FID IID CURRELIG PLASER RTNPTHY 1: fam0110 G110 2 2 2 2: fam0113 G113 2 2 2 3: fam0114 G114 2 2 2 4: fam0117 G117 2 2 2 5: fam0118 G118 2 NA 2 6: fam0119 G119 2 1 2
a=a[,PHENO:=NA] head(a)
FID IID CURRELIG PLASER RTNPTHY PHENO 1: fam0110 G110 2 2 2 NA 2: fam0113 G113 2 2 2 NA 3: fam0114 G114 2 2 2 NA 4: fam0117 G117 2 2 2 NA 5: fam0118 G118 2 NA 2 NA 6: fam0119 G119 2 1 2 NA
a=a[PLASER==2|RTNPTHY==2,PHENO:=2]
Warning message: In `[.data.table`(a, PLASER == 2 | RTNPTHY == 2, `:=`(PHENO, 2)) : 2.000000 (type 'double') at RHS position 1 taken as TRUE when assigning to type 'logical' (column 6 named 'PHENO') Please advise, Ana
On Wed, Sep 23, 2020 at 2:48 PM Jeremie Juste <jeremiejuste at gmail.com> wrote:
Hello Ana Marija, I cannot reproduce your error, with a$PHENO=ifelse(a$PLASER==2 |a$RTNPTHY==2, 2, ifelse(a$CURRELIG==1 | a$RTNPTHY==1,1,NA)) For instance I have the expected PHENO=2
FID IID CURRELIG PLASER RTNPTHY PHENO 39: fam5706 G5706 1 1 2 2
In general I find nested ifelse to be difficult to work with especially when I am tired :-). I would suggest this alternative way instead. It uses data.table and you can investigate each step if you need to. library(data.table) setDT(a) a[,PHENO:=NA] a[PLASER==2|RTNPTHY==2,PHENO:=2] a[is.na(PHENO)&(CURRELIG==1|RTNPTHY==1),PHENO:=1] HTH, Jeremie a <- read.table(text="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",sep=",", header=TRUE)