Stata 从一个范围展开观察,形成一个小组

Stata 从一个范围展开观察,形成一个小组,stata,Stata,我目前有一个数据集,如下所示 mnbr uact_id hiredate termdate 9 3709 19510101 20000915 20 9409 20001001 20080601 33 25646 19990201 20000731 mnbr表示工会中给定工人的成员编号uact\u id是他们工作的店铺,hiredate和termdate(给定yyyymmdd)表示他们在店铺的给定日期/uact

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

mnbr    uact_id   hiredate   termdate
9       3709      19510101   20000915
20      9409      20001001   20080601
33      25646     19990201   20000731
mnbr
表示工会中给定工人的成员编号
uact\u id
是他们工作的店铺,
hiredate
termdate
(给定yyyymmdd)表示他们在店铺的给定日期/
uact\u id
。我目前正在尝试使用Stata中的
expand
命令创建一个面板,以便在
hiredate
termdate
的指标之间,每年对每个成员编号(
mnbr
)进行一次观察

i、 理想情况下,它应该是

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
步骤将在中讨论

到目前为止,您的代码是什么?
hiredate
termdate
是数字还是字符串?看不到代码让人失望。“尝试使用
扩展
”总共意味着什么?谢谢,我最初能够确定hiredate和termdate(数据类型很长),但不知道replace命令。首先,我很抱歉没有发布我的代码,您的代码运行得非常好,再次感谢您的帮助。