[R] Help with if else statement

Linus Chen ||nu@@|@chen @end|ng |rom gm@||@com
Thu Aug 8 10:46:27 CEST 2019


Bert's answer is great, but since there is only two columns to be
used, why not simply
pt$pheno <- pmax( p$phenoQ ,p$phenoH )

Cheers,
Lei

On Wed, 7 Aug 2019 at 21:23, Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> The ifelse() construction is fast, but after a couple of nested iterations,
> it gets messy and error-prone; so I believe to be avoided.
>
> In your case, there is a much better alternative, ?pmax . Ergo, something
> like:
>
> pt$pheno <- do.call(pmax, pt[, -1])
>
> ?do.call is necessary to pass the list of columns pt[, -1] to pmax.
>
> Cheers,
> Bert
>
>
> 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, Aug 7, 2019 at 11:55 AM Ana Marija <sokovic.anamarija using gmail.com>
> wrote:
>
> > does this look ok:
> >
> > pt$pheno=ifelse(pt$phenoQ==-9 & pt$phenoH==-9,-9,ifelse(pt$phenoH==2 |
> > pt$phenoQ==2,2,1))
> >
> > On Wed, Aug 7, 2019 at 1:40 PM Ana Marija <sokovic.anamarija using gmail.com>
> > wrote:
> > >
> > > Hello,
> > >
> > > I have a data frame which looks like this:
> > >
> > > > head(pt)
> > >      eidQ phenoQ phenoH
> > > 1 1000017     -9     -9
> > > 2 1000025     -9     -9
> > > 3 1000038     -9      1
> > > 4 1000042     -9     -9
> > > 5 1000056     -9     -9
> > > 6 1000074     -9     -9
> > > 7   1000038     -9      1
> > > 8  1000127      2      1
> > > 9  1000690      2     -9
> > > 10  1000711      2     -9
> > > 11 1001431      2      1
> > > 12 1001710     -9      1
> > >
> > > I would like to create the 3rd column called "pheno" which would have
> > > these values:
> > > -9,-9,1,-9,-9,-9,1,2,2,2,2,1
> > >
> > > so in other words:
> > > -if -9 appears in both phenoQ and phenoH I will have -9 in pheno
> > > -if 2 appears in any of phenoQ or phenoH I will have 2 in pheno
> > > -if I have -9 and 1 or 1 and -9 in those columns I will have 1 in pheno
> > > -if I have -9 and 2 or 2 and -9 in those columns I will have 2 in pheno
> > >
> > > Can you please tell me how my if else statement would look like or any
> > > other way how to do that in R if my data frame name is "pt"
> > >
> > > Thanks
> > > Ana
> > > 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]]
>
> ______________________________________________
> 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