Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down at the end of May, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Generating a new date variable from another date variable


From   Pinaki Mitra <mitrapin@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Generating a new date variable from another date variable
Date   Tue, 5 Mar 2013 09:27:34 -0500

Thank you both Josheph Coveney, Nick Cox. I appreciate your kind
attention to this problem and proposed detail solution.

On Mon, Mar 4, 2013 at 5:29 AM, Nick Cox <njcoxstata@gmail.com> wrote:
> Joseph Coveney has expanded in detail on my suggestion. Here is
> another way to think about it.
>
> 1. If a week ends on Saturday, it starts on the previous Sunday.
> Either way, we can classify weeks by the days that start or end them.
>
> 2. Sunday starts are a little easier to deal with because -dow()-
> evaluates to 0.
>
> 3. The mapping from daily date to the previous Sunday is just
>
> . gen WeekStart = DailyDate - dow(DailyDate)
>
> and this works for the Sunday itself as we are just subtracting 0.
>
> 4. It is then simply
>
> . gen WeekEnd = WeekStart + 6
>
> 5. You can combine the two in one statement.
>
> See also for more discussion
>
> SJ-12-3 dm0065  . . . . . . . . . .  Stata tip 111: More on working with
> weeks
>         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J.
> Cox
>         Q3/12   SJ 12(3):565--569                                (no
> commands)
>         discusses how to convert data presented in yearly and weekly
>         form to daily dates and how to aggregate such data to months
>         or longer intervals
>
> SJ-10-4 dm0052  . . . . . . . . . . . . . . . . Stata tip 68: Week
> assumptions
>         . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  N. J.
> Cox
>         Q4/10   SJ 10(4):682--685                                (no
> commands)
>         tip on Stata's solution for weeks and on how to set up
>         your own alternatives given different definitions of the
>         week
>
>
>
>
> On Sat, Mar 2, 2013 at 7:37 PM, Pinaki Mitra <mitrapin@gmail.com> wrote:
>> I need to be able to keep all observations. All I need to do is to
>> assign "Saturday" for variable weekend for all observations in any
>> given week. So, for the 1st week of 2006, observations for DailyDate
>> with values 01/01/06, 01/02/06, 01/03/06, 01/04/06, 01/05/06,
>> 01/06/06, 01/07/06 will have a value of 01/07/06 (which is Satusday)
>> for the variable weekend. It will look like:
>>
>> DailyDate(original variable) WeekendDate (Want to generate)
>> 01/01/2006 01/07/2006
>> 01/03/2006 01/07/2006
>> 01/04/2006 01/07/2006
>> 01/05/2006 01/07/2006
>> 01/06/2006 01/07/2006
>> 01/07/2006 01/07/2006
>>
>> I am not sure how to do this with dow() function.
>>
>> On Sat, Mar 2, 2013 at 11:14 AM, Nick Cox <njcoxstata@gmail.com> wrote:
>>> There is no need for any kind of loop here. Use the -dow()- function and
>>> check for the days of the week you do or don't want.
>
> On 2 Mar 2013, at 15:14, Pinaki Mitra <mitrapin@gmail.com> wrote:
>
>>>> I have a data variable where each observation is different dates of
>>>> 2006 to 2012. I need to summarize this data by weekend (each Saturday
>>>> of each week). I attempted to generate a new date variable (weekend)
>>>> and collapse the data by weekend. But I am having difficulty in
>>>> generating the weekend variable from the actual date variable.
>>>> For example,
>>>> DailyDate(original variable) WeekendDate (Want to generate)
>>>> 01/01/2006 01/07/2006
>>>> 01/03/2006 01/07/2006
>>>> 01/04/2006 01/07/2006
>>>> 01/05/2006 01/07/2006
>>>> 01/06/2006 01/07/2006
>>>> I tried:
>>>> local stdate1:di %dN/D/Y (date("01/01/2006","MDY"))
>>>> local enddate1:di %dN/D/Y (date("12/31/2012","MDY"))
>>>> gen WndDate=date("01/01/2006","MDY"); format WndDate %dN/D/Y;
>>>> while `stdate1'<=`enddate1'{;
>>>> replace WndDate=`stdate1'+6 if DailyDate>=`stdate1' &
>>>> DailyDate<=`stdate1'+6;
>>>> local stdate1=`stdate1'+6;
>>>> };
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/statalist-faq/
> *   http://www.ats.ucla.edu/stat/stata/
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index