Statalist The Stata Listserver

[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

RE: st: number of missing from previous year

Subject   RE: st: number of missing from previous year
Date   Mon, 14 Aug 2006 13:34:24 +0200

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

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?


-----Original Message-----
[] On Behalf Of Ada Ma
Sent: Sunday, August 13, 2006 5:12 PM
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

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

On 8/13/06, Wanli Zhao <> 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
> working in the firm. I want to calculate the number of staff changes for
> same company for each year. For example, the data is as follows.
> 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
> in 1994 should be 2 because only person 2, 276 and 853 are retained. I
> want to count how many persons are missing from previous year. I
> your kind help.
> Wanli

*   For searches and help try:

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