Statalist The Stata Listserver


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

RE: st: number of missing from previous year


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   RE: st: number of missing from previous year
Date   Mon, 14 Aug 2006 12:46:25 +0100

Compare my posting made about the same time. 

Much though I love loops, I think a simpler 
approach using -by:- alone will suffice here. 

Nick 
[email protected] 

[email protected]
 
> 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
> }
 
> 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. 

Ada Ma
 
> 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.

Wanli Zhao

> > 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.

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



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