我目前有一个如下所示的数据集
mnbr uact_id hiredate termdate
9 3709 19510101 20000915
20 9409 20001001 20080601
33 25646 19990201 20000731
mnbr
表示工会中给定工人的成员编号。 uact_id
是他们工作的商店,hiredate
和termdate
(代表yyyymmdd)代表他们在商店/ uact_id
的特定日期。我目前正在尝试使用Stata中的expand
命令创建一个面板,以便每个成员编号(mnbr
)每年有一次观察hiredate
和{{ 1}}。
即。理想情况下应该看起来像
termdate
等。每年的每个会员编号。
答案 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?