[R] New var

Val valkremk at gmail.com
Sat Jun 3 21:09:33 CEST 2017


Thank you all for the useful suggestion. I did some of my homework.

library(data.table)
DFM <- read.table(header=TRUE, text='obs start end
1 2/1/2015   1/1/2017
2 4/11/2010  1/1/2011
3 1/4/2006   5/3/2007
4 10/1/2007  1/1/2008
5 6/1/2011   1/1/2012
6 10/5/2004 12/1/2004',stringsAsFactors = FALSE)
DFM

DFM$D =as.numeric(difftime(as.Date(DFM$end,format="%m/%d/%Y"),
as.Date(DFM$start,format="%m/%d/%Y"), units = "days"))
DFM

output.
     obs     start       end   D
1   1  2/1/2015  1/1/2017 700
2   2 4/11/2010  1/1/2011 265
3   3  1/4/2006  5/3/2007 484
4   4 10/1/2007  1/1/2008  92
5   5  6/1/2011  1/1/2012 214
6   6 10/5/2004 12/1/2004  57

My problem is how do I get the other new variables

obs     start       end   D  t1,t2,t3,t4, t5
1, 2/1/2015,  1/1/2017, 700,0,0,0,0,0
2, 4/11/2010, 1/1/2011, 265,0,0,1,-1,-1
3, 1/4/2006,  5/3/2007, 484,0,0,0,0,1
4, 10/1/2007, 1/1/2008, 92,1,-1,-1,-1,-1
5, 6/1/2011,  1/1/2012, 214,0,0,1,-1,-1
6, 10/15/2004,12/1/2004,47,1,-1,-1,-1,-1

Thank you again.



On Sat, Jun 3, 2017 at 12:13 AM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
> Ii is difficult to provide useful help, because you have failed to
> read and follow the posting guide. In particular:
>
> 1. Plain text, not HTML.
> 2. Use dput() or provide code to create your example. Text printouts
> such as that which you gave require some work to wrangle into into an
> example that we can test.
>
> Specifically:
>
> 3. Have you gone through any R tutorials?-- it sure doesn't look like
> it. We do expect some effort to learn R before posting.
>
> 4. What is the format of your date columns? character, factors,
> POSIX,...? See ?date-time for details. Note particularly the
> "difftime" link to obtain intervals.
>
> 5. ?ifelse  for vectorized conditionals.
>
> Also, you might want to explain the context of what you are trying to
> do. I strongly suspect you shouldn't be doing it at all, but that is
> just a guess.
>
> Be sure to cc your reply to the list, not just to me.
>
> Cheers,
> Bert
>
>
> 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 Fri, Jun 2, 2017 at 8:49 PM, Val <valkremk at gmail.com> wrote:
>> Hi all,
>>
>> I have a data set with time interval and depending on the interval I want
>> to create 5 more variables . Sample data below
>>
>> obs,   Start,   End
>> 1,2/1/2015,  1/1/2017
>> 2,4/11/2010, 1/1/2011
>> 3,1/4/2006,  5/3/2007
>> 4,10/1/2007, 1/1/2008
>> 5,6/1/2011,  1/1/2012
>> 6,10/15/2004,12/1/2004
>>
>> First, I want get  interval between the start date and end dates
>> (End-start).
>>
>>  obs,  Start , end, datediff
>> 1,2/1/2015,  1/1/2017, 700
>> 2,4/11/2010, 1/1/2011, 265
>> 3,1/4/2006,  5/3/2007, 484
>> 4,10/1/2007, 1/1/2008, 92
>> 5,6/1/2011,  1/1/2012, 214
>> 6,10/15/2004,12/1/2004,47
>>
>> Second. I want create 5 more variables  t1, t2, t3, t4 and  t5
>> The value of each variable is defined as follows
>> if datediff <   100 then  t1=1,  t2=t3=t4=t5=-1.
>> if datediff >= 100 and  < 200 then  t1=0, t2=1,t3=t4=t5=-1,
>> if datediff >= 200 and  < 300 then  t1=0, t2=0,t3=1,t4=t5=-1,
>> if datediff >= 300 and  < 400 then  t1=0, t2=0,t3=0,t4=1,t5=-1,
>> if datediff >= 400 and  < 500 then  t1=0, t2=0,t3=0,t4=0,t5=1,
>> if datediff >= 500 then  t1=0, t2=0,t3=0,t4=0,t5=0
>>
>> The complete out put looks like as follow.
>> obs, start,         end,    datediff,   t1, t2, t3, t4, t5
>> 1,    2/1/2015,   1/1/2017,    700, 0,  0,  0,  0,  0
>> 2,  4/11/2010,   1/1/2011,    265, 0,  0,  1, -1,  -1
>> 3,    1/4/2006,   5/3/2007,    484, 0,  0,  0, 0,   1
>> 4,   10/1/2007,  1/1/2008,      92, 1, -1, -1,-1,  -1
>> 5 ,    6/1/2011,    1/1/2012,  214,  0,  0,  1,-1,  -1
>> 6, 10/15/2004, 12/1/2004,     47, 1, -1, -1, -1, -1
>>
>> Thank you.
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help at 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