2014-10-24 4 views
0

я в настоящее время есть набор данных, который выглядит следующим образомРасширение наблюдений из диапазона, чтобы сформировать панель

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. В настоящее время я пытаюсь использовать команду expand в Stata, чтобы создать панель, в которой есть одно наблюдение в год для каждого номера участника (mnbr) между индикаторами hiredate и termdate.

т.е. она должна идеально выглядеть

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

и т.д. для каждого числа членов за каждый год.

+0

Итак, каков ваш код? Являются ли «нанятые» и «termdate» числовыми или строковыми? –

+0

Разочарование, чтобы не видеть код. Что значит «пытаться использовать« expand »? –

ответ

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?

+0

Спасибо, я изначально был в состоянии нанять наем и срок (тип данных длинный), но не знал о команде замены. Приношу свои извинения за то, что вы не отправляли мой код, а вы отлично работали и еще раз благодарили за вашу помощь. – thyde

Смежные вопросы