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 Abhimanyu Arora <[email protected]> To [email protected] Subject Re: st: Creating a dummy variable under certain conditions Date Mon, 4 Jun 2012 13:11:53 +0200

```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/

*
*   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/
```

• Follow-Ups: