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 sebas nicaise To Subject RE: st: Creating a dummy variable under certain conditions Date Mon, 4 Jun 2012 12:15:22 +0000

```Thank you very much Nick, it worked!

Thank you to for your effort Abhimanyu, your code gives me this:
date gvkey viol new_viol_dummy
1997q1 1004 0   0
1997q2 1004 0   0
1997q3 1004 0   0
1997q4 1004 0   0
1998q1 1004 0   1
1998q2 1004 0   0
1998q3 1004 0   0
1998q4 1004 0   0
1999q1 1004 0   0
1999q2 1004 0   1
1999q3 1004 0   0
1999q4 1004 0   0
2000q1 1004 0   0
2000q2 1004 0   0
2000q3 1004 0   0
2000q4 1004 0   1
2001q1 1004 0   0
2001q2 1004 0   0
2001q3 1004 0   0
2001q4 1004 0   0
2002q1 1004 0   0
2002q2 1004 0   1

So now it gave too many :)

----------------------------------------
> Date: Mon, 4 Jun 2012 12:19:23 +0100
> Subject: Re: st: Creating a dummy variable under certain conditions
> From: njcoxstata@gmail.com
> To: statalist@hsphsun2.harvard.edu
>
> 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/
*
*   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/
```