从一个范围扩展观察结果以形成一个小组



我目前有一个数据集,显示如下

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命令创建一个面板,以便在hiredatetermdate的指示符之间,每个成员编号(mnbr)每年有一次观测。

也就是说,它在理想情况下应该看起来像

mnbr    uact_id   year
9       3709      1951
9       3709      1952
9       3709      1953
9       3709      1954

等等。对于每年的每个成员编号。

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

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步骤在如何将缺失的值替换为前一个或后一个非缺失值或序列中的值?

最新更新