David W. Harless:
Here is another approach (cut and paste to Command window):
clear
tempfile p1 p2
input beg1 end1 p1
15522 15674 1
15887 16617 1
end
ren beg1 date1
ren end1 date2
g id=1
g i=_n
reshape long date, i(i) j(t1)
la def t 1 "begin" 2 "end"
la val t1 t
format date %d
save `p1'
clear
input beg2 end2 p2
15522 15674 1
15979 16436 1
16557 16587 1
end
ren beg2 date1
ren end2 date2
g id=1
g i=_n
reshape long date, i(i) j(t2)
la def t 1 "begin" 2 "end"
la val t2 t
format date %d
save `p2'
joinby id date using `p1', unm(both) update
drop i _m
sort id date
by id: g inp1=(sum(t1==1)>0)-(t1==2)>0
by id: replace inp1=0 if inp1[_n-1]==0&mi(p1)
by id: g inp2=(sum(t2==1)>0)-(t2==2)>0
by id: replace inp2=0 if inp2[_n-1]==0&mi(p2)
bys id (date): g enddate=date[_n+1]
format enddate %d
order id date enddate t1 t2 p1 p2 inp1 inp2
ren date startdate
drop t1 t2 p1 p2
drop if mi(end)
g david=max(inp1,2*inp2)
li, noo clean
David W. Harless
I have two data sets containing dates of participation in two related
programs, program 1
and program 2. But the complication is that the program 1 data set lists
dates if the
participant is enrolled in *either* program 1 or program 2. Dates in the
program 2 data
set indicate definite participation in program 2.
The best explanation is an example. Here is program participation dates
from the program
1 data set. (Date variables have display format %dD_m_Y and I added the
program variable
to make this explanation clearer):
beg1 end1 program
01 Jul 02 30 Nov 02 1
01 Jul 03 30 Jun 05 1
And the same individual for the program 2 data set:
beg2 end2 program
01 Jul 02 30 Nov 02 2
01 Oct 03 31 Dec 04 2
01 May 05 31 May 05 2
I want to combine these records to obtain a data set that looks like:
beg end program
01 Jul 02 30 Nov 02 2
01 Dec 02 30 Jun 03 0
01 Jul 03 30 Sep 03 1
01 Oct 03 31 Dec 04 2
01 Jan 05 30 Apr 05 1
01 May 05 31 May 05 2
01 Jun 05 30 Jun 05 1
(where the 0 indicates the individual did not participate in either program
during that
period).
There are, of course, many individuals with varying dates of participation
in one or both
programs. Any suggestions as to how one might solve this problem?
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/