[R] if else statement adjustemtn

Jim Lemon drj|m|emon @end|ng |rom gm@||@com
Sat Jun 13 11:09:11 CEST 2020


Right, back from shopping. Since you have fourteen rows containing NAs
and you only want seven, we can infer that half of them must go. As
they are neatly divided into seven rows in which only one NA appears
and seven in which two stare meaninglessly out at us. I will assume
that the latter are the ones to be discarded. As your condition for
calculating "pheno" stated that a 2 in either FLASER or PLASER should
result in a 2 in pheno, the following statement closely conforms to
that:

b<-read.table(text="FID   IID FLASER PLASER
  fam1837 G1837      1     NA
  fam2410 G2410     NA     NA
  fam2838 G2838     NA      2
  fam3367 G3367      1     NA
  fam3410 G3410      1     NA
  fam3492 G3492      1     NA
  fam0911  G911     NA     NA
  fam3834 G3834      2     NA
  fam4708 G4708     NA      2
  fam5162 G5162     NA     NA
  fam5274 G5274     NA     NA
  fam0637  G637     NA     NA
  fam0640  G640     NA     NA
  fam0743  G743     NA     NA
  fam0911  G911     NA     NA",
  header=TRUE,stringsAsFactors=FALSE)

b$pheno<-ifelse(b$FLASER == 2 | b$PLASER == 2,2,1)
# use the valid FLASER values when PLASER is NA
b[is.na(b$pheno),]$pheno<-ifelse(!is.na(b[is.na(b$pheno),]$FLASER),
 b[is.na(b$pheno),]$FLASER,NA)
# use the valid PLASER values when FLASER if NA
b[is.na(b$pheno),]$pheno<-ifelse(!is.na(b[is.na(b$pheno),]$PLASER),
 b[is.na(b$pheno),]$PLASER,NA)
b

I could write that mess in one straitjacket of conditional statements
but my brain hurts enough.

Jim


On Sat, Jun 13, 2020 at 1:59 PM Ana Marija <sokovic.anamarija using gmail.com> wrote:
>
> Great idea!
> Here it is:
> > b[is.na(b$FLASER) | is.na(b$PLASER),]
>         FID   IID FLASER PLASER pheno
>  1: fam1837 G1837      1     NA     2
>  2: fam2410 G2410     NA     NA     2
>  3: fam2838 G2838     NA      2     2
>  4: fam3367 G3367      1     NA     2
>  5: fam3410 G3410      1     NA     2
>  6: fam3492 G3492      1     NA     2
>  7: fam3834 G3834      2     NA     2
>  8: fam4708 G4708     NA      2     2
>  9: fam5162 G5162     NA     NA     2
> 10: fam5274 G5274     NA     NA     2
> 11: fam0637  G637     NA     NA     2
> 12: fam0640  G640     NA     NA     2
> 13: fam0743  G743     NA     NA     2
> 14: fam0911  G911     NA     NA     2
>
> On Fri, Jun 12, 2020 at 10:29 PM Jim Lemon <drjimlemon using gmail.com> wrote:
> >
> > Since you have only a few troublesome NA values, if you look at them,
> > or even better, post them:
> >
> > b[is.na(b$FLASER) | is.na(b$PLASER),]
> >
> > perhaps we can work out the appropriate logic to get rid of only the
> > ones you don't want.
> >
> > Jim
> >
> > On Sat, Jun 13, 2020 at 12:50 PM Ana Marija <sokovic.anamarija using gmail.com> wrote:
> > >
> > > Hi Rasmus,
> > >
> > > thank you for getting back to be, the command your provided seems to
> > > add all 11 NAs to 2s
> > > > b$pheno <-
> > > +           ifelse(b$PLASER==2 |
> > > +                  b$FLASER==2 |
> > > +                  is.na(b$PLASER) |
> > > +                  is.na(b$PLASER) & b$FLASER %in% 1:2 |
> > > +                  is.na(b$FLASER) & b$PLASER == 2,
> > > +                  2, 1)
> > > >         table(b$pheno, exclude = NULL)
> > >
> > >   1   2
> > > 859 839
> > >
> > > Once again my desired results is to keep these 7 NAs as NAs
> > > > table(b$PLASER,b$FLASER, exclude = NULL)
> > >
> > >          1   2   3 <NA>
> > >   1    836  14   0    0
> > >   2    691  70  43    2
> > >   3      2   7  21    0
> > >   <NA>   4   1   0    7
> > >
> > > and have
> > > 825 2s (825=691+14+70+7+43)
> > > and the rest would be 1s (866=1698-7-825)
> > >
> > > On Fri, Jun 12, 2020 at 9:29 PM Rasmus Liland <jral using posteo.no> wrote:
> > > >
> > > > On 2020-06-13 11:30 +1000, Jim Lemon wrote:
> > > > > On Fri, Jun 12, 2020 at 8:06 PM Jim Lemon wrote:
> > > > > > On Sat, Jun 13, 2020 at 10:46 AM Ana Marija wrote:
> > > > > > >
> > > > > > > I am trying to make a new column
> > > > > > > "pheno" so that I reduce the number
> > > > > > > of NAs
> > > > > >
> > > > > > it looks like those two NA values in
> > > > > > PLASER are the ones you want to drop.
> > > > >
> > > > > From just your summary table, it's hard to
> > > > > guess the distribution of NA values.
> > > >
> > > > Dear Ana,
> > > >
> > > > This small sample
> > > >
> > > >         b <- read.table(text="FLASER;PLASER
> > > >         1;2
> > > >         ;2
> > > >         ;
> > > >         1;
> > > >         2;
> > > >         2;2
> > > >         3;2
> > > >         3;3
> > > >         1;1", sep=";", header=TRUE)
> > > >
> > > >         table(b$PLASER,b$FLASER, exclude = NULL)
> > > >
> > > > yields the same combinations you showed
> > > > earlier:
> > > >
> > > >                1 2 3 <NA>
> > > >           1    1 0 0    0
> > > >           2    1 1 1    1
> > > >           3    0 0 1    0
> > > >           <NA> 1 1 0    1
> > > >
> > > > If you want to eliminate the four <NA>-based
> > > > combinations completely, this line
> > > >
> > > >         b$pheno <-
> > > >           ifelse(b$PLASER==2 |
> > > >                  b$FLASER==2 |
> > > >                  is.na(b$PLASER) |
> > > >                  is.na(b$PLASER) & b$FLASER %in% 1:2 |
> > > >                  is.na(b$FLASER) & b$PLASER == 2,
> > > >                  2, 1)
> > > >         table(b$pheno, exclude = NULL)
> > > >
> > > > will do it:
> > > >
> > > >         1 2
> > > >         2 7
> > > >
> > > > Best,
> > > > Rasmus
> > > > ______________________________________________
> > > > 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.
> > >
> > > ______________________________________________
> > > 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