Both your syntax and semantics are wrong. This indicates to me that you should spend more time with some basic R tutorials before proceeding.
That said, here are some of the errors: 1) You are not using sapply correctly. Moreover, no R level iteration is needed anyway (sapply() iterates over columns in a data frame). 2) You are confusing && (not vectorized) with & (vectorized) 3) You seem to be confusing if ... else (flow control) with ifelse() (vectorized function) 4) Many of your conditions are nonsense or redundant. For example: (a<0 & b>0 & b<a) is nonsense (a<0 & b>0 & b>a) is the same as (a < 0 & b > 0) etc. A simple way to accomplish what you want, I think, that takes advantage of coercion of logicals to numeric is something along the lines of this reproducible example: set.seed(4444) a <- floor(runif(50,-20,20)) ## D$X b <- floor(runif(50,-20,20)) ## D$Y D$phase <- rep_len(0, length(b)) + 1*(a<0 & b<0 & b<a) + 2*(a<0 & b<0 & b>a) + 8*(a<0 & b>0) ## etc. 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 Tue, Oct 22, 2019 at 11:30 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. > [[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.