[R] Conditions in R (Help Post)
jim holtman
jho|tm@n @end|ng |rom gm@||@com
Tue Oct 22 20:28:32 CEST 2019
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 <jholtman using 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.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