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: Creating a dummy variable under certain conditions


From   Nick Cox <njcoxstata@gmail.com>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Creating a dummy variable under certain conditions
Date   Mon, 4 Jun 2012 12:19:23 +0100

Thanks. As my previous three solutions were all quite wrong, I had
some distance to make up.

Nick

On Mon, Jun 4, 2012 at 12:11 PM, Abhimanyu Arora
<abhimanyu.arora1987@gmail.com> wrote:
> All I can say to Nick's ingenious solution iswow (shouldn't come as a
> surprise though)
>
> Sebas, instead of -replacing- 2 times you could further shorten the
> alternative solution by
>
> replace new_viol_dummy=0 if ceil(_seq/6)!=floor(_seq/6) & _seq!=1 & viol==0
>
> In order to get a clear, detailed understanding of things, would you
> mind listing out why this gives too few ones, given your requirements?
>
> Thanks
>
> Abhimanyu
>
>
> On Mon, Jun 4, 2012 at 12:06 PM, Nick Cox <njcoxstata@gmail.com> wrote:
>> Quite so. Let's try something different.
>>
>> gen history = ""
>> bysort gvkey (date) : replace history = string(viol) + history[_n-1]
>> gen OK = substr(history, 1, 5) == "10000"
>>
>> Nick
>>
>> On Mon, Jun 4, 2012 at 10:38 AM, sebas nicaise <sebasnicaise@hotmail.com> wrote:
>>>
>>> Nick your code is almost right. Only it gives a 1 for these cases while it should not:
>>>
>>> date gvkey viol myindicator
>>> 2000q3 1045 0 0
>>> 2000q4 1045 0 0
>>> 2001q1 1045 0 0
>>> 2001q2 1045 0 0
>>> 2001q3 1045 1 1
>>> 2001q4 1045 1 0
>>> 2002q1 1045 0 0
>>> 2002q2 1045 0 0
>>> 2002q3 1045 0 0
>>> 2002q4 1045 1 1
>>> 2003q1 1045 1 0
>>> 2003q2 1045 0 0
>>>
>>> You see, because viol is 1 again after the new viol reported a 1. So it is wrong because there are only 3 quarters of 0 in the viol dummy.
>>>
>>>
>>> Abrihmanyu, in your code it gives to few 1's But if it reports a 1 it is right. I do not see the error in the code...
>>>
>>>
>>>
>>>
>>> ----------------------------------------
>>>> Date: Mon, 4 Jun 2012 09:41:24 +0100
>>>> Subject: Re: st: Creating a dummy variable under certain conditions
>>>> From: njcoxstata@gmail.com
>>>> To: statalist@hsphsun2.harvard.edu
>>>>
>>>> bysort gvkey (date) : gen cuviol = sum(viol)
>>>> by gvkey : gen myindicator = (viol == 1) & (cuviol[_n-1] ==
>>>> cuviol[_n-4]) & _n> 4
>>>>
>>>> Nick
>>>>
>>>> On Mon, Jun 4, 2012 at 9:22 AM, sebas nicaise <sebasnicaise@hotmail.com> wrote:
>>>>
>>>>> It is important that new viol dummy can only be 1 if viol is 1 and in the previous 4 quarters viol is 0.
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


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