[R] Conditions in R (Help Post)

Yeasmin Alea ye@@m|n@@|e@ @end|ng |rom gm@||@com
Wed Oct 23 07:19:56 CEST 2019


Thank you. Can you please have a look the below data sets, script and
question?

*Dataset-1: Pen*

*YEAR   DAY      X     Y   Sig phase  *

*  <dbl> <dbl>  <dbl> <dbl> <dbl> <chr>  *

*1  1981     9 -0.213 1.08   1.10 Phase-7*

*2  1981    10  0.065 1.05   1.05 Phase-6*



*Dataset-2: Book*

*YEAR         Time *

*1  1981     1981-12-03 06:00:00 *

*2  1981    1981-12-04 00:00:00*



I want the output table as

*YEAR         Time                                   phase*

*1  1981     1981-12-03 06:00:00     Phase-7*

*2  1981    1981-12-04 00:00:00     Phase-4*



*How can I combine and match the Dataset-1 DAY (365 days*35 years) +YEAR
with Dataset-2 YEAR+Time? Dataset 1 has 5,551 rows and dataset 2 has 22,210*

d$Pen<-Pen[cbind(match(Book$Time,Pen$DAY)]
Kind regards
Alea Yeasmin


On Wed, Oct 23, 2019 at 2: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