[R] Conditions in R (Help Post)

jim holtman jho|tm@n @end|ng |rom gm@||@com
Tue Oct 22 20:20:17 CEST 2019


Here is one way of doing it; I think the output you show is wrong:

library(tidyverse)
input <- read_delim(" YEAR   DAY      X     Y   Sig
  1981     9 -0.213 1.08   1.10
  1981    10  0.065 1.05   1.05", delim = ' ', trim_ws = TRUE)

input <- mutate(input,
  phase = case_when(X < 0 & Y < 0 & Y < X ~ 'phase=1',
                    X < 0 & Y > 0 & Y < X ~ 'phase=2',
                    X < 0 & Y > 0 & Y < X ~ 'phase=7',
                    X < 0 & Y > 0 & Y > X ~ 'phase=8',
                    X > 0 & Y < 0 & Y < X ~ 'phase=3',
                    X > 0 & Y < 0 & Y > X ~ 'phase=4',
                    X > 0 & Y > 0 & Y > X ~ 'phase=6',
                    X > 0 & Y > 0 & Y < X ~ 'phase=5',
                    TRUE ~ 'unknown'
  )
)

> input
# A tibble: 2 x 6
   YEAR   DAY      X     Y   Sig phase
  <dbl> <dbl>  <dbl> <dbl> <dbl> <chr>
1  1981     9 -0.213  1.08  1.1  phase=8
2  1981    10  0.065  1.05  1.05 phase=6

Jim Holtman
*Data Munger Guru*


*What is the problem that you are trying to solve?Tell me what you want to
do, not how you want to do it.*


On Tue, Oct 22, 2019 at 9:43 AM Yeasmin Alea <yeasmin.alea using gmail.com> wrote:

> Hello Team
> I would like to add a new column (for example-Phase) from the below data
> set based on the conditions
>    YEAR   DAY      X     Y   Sig
>  1  1981     9 -0.213 1.08   1.10
>  2  1981    10  0.065 1.05   1.05
> *Conditions*
>
> D$Phase=sapply(D,function(a,b) {
>      a <-D$X
>      b<-D$Y
>      if (a<0 && b<0 && b<a)
>     {phase=1} else if (a<0 && b<0 && b>a)
>     {phase=2} else if (a<0 && b>0 && b<a)
>     {phase=7} else if (a<0 && b>0 && b>a)
>     {phase=8} else if (a>0 && b<0 && b<a)
>     {phase=3} else if (a>0 && b<0 && b>a)
>     {phase=4} else if (a>0 && b>0 && b>a)
>     {phase=6} else (a>0 && b>0 && b<a)
>     {phase=5}
> })
>
> Can anyone help to fix the script to get a Phase column based on the
> conditions. The table will be like the below
>    YEAR   DAY      X     Y   Sig      Phase
>  1  1981     9 -0.213 1.08   1.10   phase=7
>  2  1981    10  0.065 1.05   1.05   phase=6
>
> Many thanks
> Alea
>
>         [[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.
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list