[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: Modified Question: Manipulating an Unbalanced Panel

From   "Nick Cox" <>
To   <>
Subject   st: RE: Modified Question: Manipulating an Unbalanced Panel
Date   Mon, 24 Nov 2008 12:37:50 -0000

==== solution 1 

A direct answer to your question is that you could exploit the results
your -count- command by using its result saved in r(N). For example, 

gen byte nOK = 0 
egen group = group(PanelMember) if consumption > 0 & consumption < . 
su group, meanonly 
qui forval i = 1/`r(N)' { 
	count if group == `i'
	replace nOK = r(N) if group == `i' 

followed by 

... if nOK >= 2 

But there are other and better ways to do that. 

==== solution 2 
One is  

egen nOK = total(consumption > 0 & consumption < .) , by(PanelNumber)  

followed by 

... if nOK >= 2 & consumption > 0 & consumption < . 

As -consumption > 0- is true, and evaluates to 1, whenever -consumption-
is positive, the -egen- statement counts suitable observations within
each panel. 

The extra condition -consumption < .- has been added to exclude any
missings, which also count as positive. That does no harm and may catch
some problems. (The -count- statement above does the same.) 

==== solution 3
Another is closer to your original code: 

gen byte OK = consumption > 0 & consumption < . 
bysort OK PanelMember : gen nOK = cond(OK == 0, 0, _N) 
... if nOK >= 2 

At this moment, the last is in my view the best way to do what you want.


P.S. In your example, the variable counts observations in each panel,
not the number of panels. 

ippab ippab

I just realized that I can generate a variable with the number of
panels with the following command: by  PanelNumber: gen CountSessions
= _N .

But, in my data, there is another variable which indicates if that
observation has any positive consumption.  I actually need to count
the number of positive consumptions for each panel.  There are
sessions without any consumption.  For example, I used "by
PanelNumber: gen CountSessions = _N   if  consumption>0".  This is
wrong because this gives CountSessions =2 even if a panel has one
session (observation) with positive consumption  and one session
(observation) without any consumption.

I found that the following command gives me the right output on the
screen: "by  PanelNumber: count   if  consumption>0".   However, I
don't know how to generate a variable to capture the output for the
command:  "by PanelNumber: count   if  consumption>0".  I would really
appreciate some help with this.

*   For searches and help try:

© Copyright 1996–2021 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index