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

# Re: st: Creating a dummy variable under certain conditions

 From Nick Cox <[email protected]> To [email protected] 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
<[email protected]> 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 <[email protected]> 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 <[email protected]> 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: [email protected]
>>>> To: [email protected]
>>>>
>>>> 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 <[email protected]> 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/
```