Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


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

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


From   "Joseph Coveney" <[email protected]>
To   <[email protected]>
Subject   st: Re: Generating a new date variable from another date variable
Date   Sun, 3 Mar 2013 17:27:23 +0900

Pinaki Mitra 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:
[snip]
It does not work. Would anyone please help? Thank you.

--------------------------------------------------------------------------------

I would recommend taking Nick's suggestion of -dow()- and running with it.
Something like that below should work.  The first part is just recreating your
dataset excerpt.  Look at the section the begins with "Begin here".  I don't
know whether your target dataset has all the days of the year or not, and so I
recommend creating a separate calendar dataset containing the Saturday dates
that you need, and then merging your target dataset with the separate calendar
dataset.

Joseph Coveney

. clear *

. set more off

. 
. input str20 DailyDate

                DailyDate
  1. "01/01/2006"
  2. "01/03/2006"
  3. "01/04/2006"
  4. "01/05/2006"
  5. "01/06/2006"
  6. end

. generate int holder = date(DailyDate, "MDY")

. drop DailyDate

. rename holder DailyDate

. tempfile Pinaki_Mitras_dataset

. quietly save `Pinaki_Mitras_dataset'

. drop _all

. 
. *
. * Begin here
. *
. quietly set obs `=date("2012-12-31", "YMD") - ///
>     date("2006-01-01", "YMD") + 10'

. generate int DailyDate = date("2005-12-31", "YMD") + _n

. generate int week = sum(dow(DailyDate) == 0)

. bysort week (DailyDate): generate int WeekendDate = DailyDate[_N]

. quietly drop if DailyDate > date("2012-12-31", "YMD")

. 
. format *Date %tdCCYY-NN-DD

. list in 1/10, noobs abbreviate(20) sepby(week)

  +---------------------------------+
  |  DailyDate   week   WeekendDate |
  |---------------------------------|
  | 2006-01-01      1    2006-01-07 |
  | 2006-01-02      1    2006-01-07 |
  | 2006-01-03      1    2006-01-07 |
  | 2006-01-04      1    2006-01-07 |
  | 2006-01-05      1    2006-01-07 |
  | 2006-01-06      1    2006-01-07 |
  | 2006-01-07      1    2006-01-07 |
  |---------------------------------|
  | 2006-01-08      2    2006-01-14 |
  | 2006-01-09      2    2006-01-14 |
  | 2006-01-10      2    2006-01-14 |
  +---------------------------------+

. list in -10/l, noobs abbreviate(20) sepby(week)

  +---------------------------------+
  |  DailyDate   week   WeekendDate |
  |---------------------------------|
  | 2012-12-22    364    2012-12-22 |
  |---------------------------------|
  | 2012-12-23    365    2012-12-29 |
  | 2012-12-24    365    2012-12-29 |
  | 2012-12-25    365    2012-12-29 |
  | 2012-12-26    365    2012-12-29 |
  | 2012-12-27    365    2012-12-29 |
  | 2012-12-28    365    2012-12-29 |
  | 2012-12-29    365    2012-12-29 |
  |---------------------------------|
  | 2012-12-30    366    2013-01-05 |
  | 2012-12-31    366    2013-01-05 |
  +---------------------------------+

. drop week

. 
. merge 1:m DailyDate using `Pinaki_Mitras_dataset', ///
>    assert(match master) keep(match) nogenerate noreport

. 
. list, noobs abbreviate(20)

  +--------------------------+
  |  DailyDate   WeekendDate |
  |--------------------------|
  | 2006-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 |
  +--------------------------+

. 
. exit

end of do-file


*
*   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–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index