Here is another way of doing it by computing the index based on the conditions
> 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 > > # another way of doing it by constructing an integer to be used as > # index for the phase value based on the evaluation of X<0, Y<0 and Y<X. > > index <- with(input, + (X < 0) * 4 + (Y < 0) * 2 + (Y < X) + ) > > phase_val <- c(6, 5, 4, 3, 8, 7, 2, 1) > > input$phase_2 <- paste0('phase=', phase_val[index + 1L]) > input # A tibble: 2 x 7 YEAR DAY X Y Sig phase phase_2 <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <chr> 1 1981 9 -0.213 1.08 1.1 phase=8 phase=8 2 1981 10 0.065 1.05 1.05 phase=6 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 11:28 AM jim holtman <jholt...@gmail.com> wrote: > Had the condition for phase=2 incorrect: > > 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' > ) > ) > > 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 11:20 AM jim holtman <jholt...@gmail.com> wrote: > >> 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.a...@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@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@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.