[R] if else statement adjustemtn

Márk Szalai m@rk@@z@|@|@hu @end|ng |rom gm@||@com
Sat Jun 13 14:39:59 CEST 2020


Dear Ana,

pmax could also fit here.
pmax(b$FLASER, b$PLASER, na.rm = TRUE)

Bests,
Mark



> ------------------------------
>
> Message: 21
> Date: Sat, 13 Jun 2020 19:09:11 +1000
> From: Jim Lemon <drjimlemon using gmail.com>
> To: sokovic.anamarija using gmail.com
> Cc: Rasmus Liland <jral using posteo.no>, r-help <r-help using r-project.org>
> Subject: Re: [R] if else statement adjustemtn
> Message-ID:
>         <CA+8X3fU6-wp1cT3Ox6+idUvu7wL2M9THbLBDsewUB-8_Vja-Nw using mail.gmail.com>
> Content-Type: text/plain; charset="utf-8"
>
> 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