扩展范围内的观察结果以形成面板

时间:2014-10-24 23:42:55

标签: stata

我目前有一个如下所示的数据集

mnbr    uact_id   hiredate   termdate
9       3709      19510101   20000915
20      9409      20001001   20080601
33      25646     19990201   20000731

mnbr表示工会中给定工人的成员编号。 uact_id是他们工作的商店,hiredatetermdate(代表yyyymmdd)代表他们在商店/ uact_id的特定日期。我目前正在尝试使用Stata中的expand命令创建一个面板,以便每个成员编号(mnbr)每年有一次观察hiredate和{{ 1}}。

即。理想情况下应该看起来像

termdate

等。每年的每个会员编号。

1 个答案:

答案 0 :(得分:1)

假设任意日期是字符串,我们可以去

gen year = real(substr(hiredate, 1, 4))
gen duration = real(substr(termdate, 1, 4)) - year + 1
expand duration
bysort mnbr : replace year = year[_n-1] + 1 if _n > 1

如果日期是数字,特别是整数,那么前两行可以是

gen year = floor(hiredate/10000)
gen duration = floor(termdate/10000) - year + 1

内部讨论了replace步骤 How can I replace missing values with previous or following nonmissing values or within sequences?