Hi Wanli,
Here's some code that might be helpful. It will handle as many years as you
have, and your panel dataset doesn't have to be balanced. Note that it counts
the number of employees in each firm that are recorded in a certain year but
not in the next year (these will be in the variables chg`year'). So, as in your
example, chg1994, will be 2 for all observations from firm 1.
*create an index variable for tsset (i.e., declare the dataset as panel)
egen index=group(firm personid)
*get the min and max but one years for all firms
su year
local minyear=r(min)
local maxbutoneyear=r(max)-1
*create a variable with the max year for each firm
bysort firm: egen maxyear=max(year)
*loop through the years
forval year=`minyear'/`maxbutoneyear' {
tsset index year
*create variable if employee is recorded this year but not in the next year
gen miss=(year==`year' & personid!=. & f.personid==. & year<maxyear)
*count for each firm employees recorded this year but not in the next year
local yearplus1=`year'+1
bysort firm: egen chg`yearplus1'=sum(miss)
drop miss
}
David Cheong
Brandeis University
Website: http://people.brandeis.edu/~davche
Ada,
Thanks for the prompt help. My mistake to imply I only have 2 years data but
actually I have 8 years. I think the change should be for 1994 because
that's when the change occurs. In addition, this may be not what I want
because the code counts number of people change from firm to firm. If a
person retires and never appears in the data, then she is not counted in the
code I think, but should be. Again, I need to count the missing persons from
year to year. Could you help again?
Wanli
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Ada Ma
Sent: Sunday, August 13, 2006 5:12 PM
To: [email protected]
Subject: Re: st: number of missing from previous year
bysort firm personid: gen count=_N if year==1993 | year==1994
* Count would equal to 2 if a person is with the same firm for both
1993 and 1994, 1 if this person was only with this firm in 1993 or in
1994.
bysort firm year: egen changed=total(count) if count==1 & year==1993
variable changed would contain the number of employees who were with
this firm in 1993, but no longer remain employed with the same
employer in 1994. it'd be all missing values for this variable in
1994.
On 8/13/06, Wanli Zhao <[email protected]> wrote:
> Guys, please help me with a data management question. I spent a day and
> cannot figure out.
> I have panel dataset, which has firm ID, year, and person ID for the
people
> working in the firm. I want to calculate the number of staff changes for
the
> same company for each year. For example, the data is as follows.
> FIRM YEAR PERSONID
> 1 1993 2
> 1 1993 4
> 1 1993 276
> 1 1993 23456
> 1 1993 853
> 1 1994 2
> 1 1994 276
> 1 1994 853
> 1 1994 3452
> 1 1994 224
>
> I already sort firm and year. As you can see, the change of staff for firm
1
> in 1994 should be 2 because only person 2, 276 and 853 are retained. I
only
> want to count how many persons are missing from previous year. I
appreciate
> your kind help.
>
> Wanli
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/