# Re: st: bys and [_N] within replace

 From Eva Poen To statalist@hsphsun2.harvard.edu Subject Re: st: bys and [_N] within replace Date Wed, 18 Mar 2009 10:17:21 +0000

```Alexander,

try this:
gen other =  Result2 != "TM Ei-svar"
bysort Id (Commdate) : replace other = sum(other)
by      Id (Commdate) : gen dummy = other[_N]==0

drop other

Eva

2009/3/18  <Alexander.Severinsen@telenor.com>:
> I have the following panel.
>
>
> Id      Commdate        Result2
> 400     05may2008       TM FAILURE
> 400     29may2008       DM FAILURE
> 400     05oct2008       TM Ei-svar
> 400     27oct2008       TM Ei-svar
> 400     30nov2008       TM Ei-svar
> 400     04jan2009       TM Ei-svar
>
> I would like to generate a binary variable that equals 1 if a category "TM Ei-svar" within result2 occurs. But I only want this to happen if no other category in Result2 is present within Id, either onwards are backwards in time (Commdate). Nick Cox and Martin Weiss gave excellent advice on an earlier related problem pointing me to 'bys' and using [_N] within replace statements. Nick also refered me to further free 'by' tricks at
>
> http://www.stata-journal.com/sjpdf.html?articlenum=pr0004
>
> However, I am still unable to solve the above problem. I tried
>
> gen kun_eisvar=0
> bys Id (Commdate):replace kun_eisvar=1 if ///
>        (result2=="TM Ei-svar"& ///
>        result2[_N]!="TM FAILURE"&result2[_N-1]!="TM FAILURE"& ///
>        result2[_N]!="TM SUCCESS"&result2[_N-1]!="TM SUCCESS"& ///
>        result2[_N]!="SUCCESS DM SMS 1999"&result2[_N-1]!="SUCCESS DM SMS 1999"& ///
>        result2[_N]!="DM SUCCESS NY BIND"&result2[_N-1]!="DM SUCCESS NY BIND"& ///
>        result2[_N]!="DM SUCCESS"&result2[_N-1]!="DM SUCCESS"& ///
>        result2[_N]!="DM FAILURE"&result2[_N-1]!="DM FAILURE")
>
> though, this does not work. See an example below.
>
> Id      Commdate        Result2 kun_eisvar
> 400     05may2008       TM FAILURE      0
> 400     29may2008       DM FAILURE      0
> 400     05oct2008       TM Ei-svar      1
> 400     27oct2008       TM Ei-svar      1
> 400     30nov2008       TM Ei-svar      1
> 400     04jan2009       TM Ei-svar      1
>
> Because Result2 has other categories than 'TM Ei-svar' for Id=400 this observation should not equal 1.
>
> Any advice on where I went wrong is appreciated.
>
>
> Best wishes,
> Alexander
>
>

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