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]
Re: st: Finding the corresponding variable
From
Nick Cox <[email protected]>
To
"[email protected]" <[email protected]>
Subject
Re: st: Finding the corresponding variable
Date
Sun, 7 Apr 2013 10:07:28 +0100
Should be
gen closest = cond(abs(datea - `when') < abs(dateb - `when'), datea, dateb)
Nick
[email protected]
On 7 April 2013 09:21, Nick Cox <[email protected]> wrote:
> Your problem has several similarities with that posed by David
> Ashcraft yesterday. Read the whole thread starting at
>
> http://www.stata.com/statalist/archive/2013-04/msg00225.html
>
> The closest (closer) date of two others is
>
> local when = mdy(1,1,2013)
>
> gen closest = cond(abs(datea - `when') > abs(dateb - `when'), datea, dateb)
>
> after which you can -list- it.
>
> Alternatively, given what you have,
>
> gen closest = cond(var1 < var2, datea, dateb)
>
> You need some rule for when two dates are equally close.
>
> Notes:
>
> 1. I recommend against meaningless names such as "var1", "var2",
> "var3". You put strain on yourself and anyone reading your code to
> remember what they are
>
> 2. -egen, rowmin()- is all right for what you did but using the
> -min()- function is simpler with just two arguments.
>
> Nick
> [email protected]
>
> On 7 April 2013 05:24, Ching Wong <[email protected]> wrote:
>
>> I have TWO variables of dates, called "datea" and "dateb". I would
>> like to calculate the number of days between a particular date (says,
>> 1/01/2013) and the closest day either "datea" or "dateb".
>>
>> Firstly, I generated one variable called "var1" which is the number of
>> days between the particular date and "datea" and also generated
>> another variable called "var2" which is the number of days between the
>> particular date and "dateb".
>>
>> Then I set up another variable "var3" in order to choose the minimun
>> number of days between "var1" and "var2". By using the Command as
>> following:
>> ---> egen var3 = rowmin (var1 var2).
>>
>> My question is that after getting "var3", how I can list the
>> corresponding "datea" or "dateb"?
>> i.e. var3---> var1 or var2----> datea or dateb
*
* 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/