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/