[R] Conditions in R (Help Post)
David Winsemius
dw|n@em|u@ @end|ng |rom comc@@t@net
Wed Oct 23 20:29:29 CEST 2019
On 10/22/19 10:19 PM, Yeasmin Alea wrote:
> 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*
You are posting in HTML. R help is a plain text mailing list. It is easy
to send plain text using gmail. You should start over by configuring
your mail client for this purpose and send the output of dput(head(Pen))
and dput(head(Book)) rather than the versions above which do not lend
themselves to simple input strategies.
--
David.
>
>
>
> *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]]
>
> ______________________________________________
> 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.
More information about the R-help
mailing list