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

st: AW: Using egen and by efficiently when some observations are missing

 From "Martin Weiss" To Subject st: AW: Using egen and by efficiently when some observations are missing Date Thu, 22 Apr 2010 18:00:56 +0200

```<>

To solve these things, you have to get creative and note that -egen-
functions often take expressions as arguments, as duly shown in the relevant
sections of -help egen-:

*************
bys country: egen count_i_alt = total((condition==1)*(!mi(i)))
*************

BTW, the max operator projects the "tmp" value into the rows that end up
with missings after the first -egen- call, right? Is this really all you
want out of it, or am I missing anything here?

********
clear*

inp byte(country:mylabel i condition), automatic
A 2 1
A 3 .
A 4 0
A . 1
A . .
A . 1
B 2 1
B 3 .
B 4 0
B 1 .
B . 1
B 3 1
end

bys country: egen tmp = count(i) if condition == 1
bys country: egen count_i = max(tmp)

bys country: egen count_i_alt = total((condition==1)*(!mi(i)))

li, sepby(country) noo
********

HTH
Martin

-----Ursprüngliche Nachricht-----
Von: owner-statalist@hsphsun2.harvard.edu
[mailto:owner-statalist@hsphsun2.harvard.edu] Im Auftrag von Paul Novosad
Gesendet: Donnerstag, 22. April 2010 17:25
An: statalist@hsphsun2.harvard.edu
Betreff: st: Using egen and by efficiently when some observations are
missing

Dear list,

It often takes me three lines to generate variables based on
conditional group operations using egen.  For example, I want to run
some egen operation on a subset of the data, such as a count.  But I
want the count to exist even when the condition does not hold.  I use
the following:

by country: egen tmp = count(i) if condition == 1
by country: egen count_i = max(tmp)
drop tmp

I write code like this all over the place, and each time it makes my
heart sink.  It feels inefficient but I do not have another solution.
Can someone recommend a more efficient practice?

Thanks,

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