I can't reproduce this. The key is, or should be,
the condition
_n == 1
to restrict changes to the first record.
I did this to get a toy example:
set obs 100
egen id = seq() , to(10)
egen time = seq(), block(10)
drop if inlist(id,3,5) & time > 1
tab id
bysort id (time) : gen multiple = _N > 1
egen ID = group(id) if multiple
tab ID
gen somevar = uniform()
bysort ID (time) : replace somevar = . if _n == 1 & mod(ID,5) == 0
l
and this works for me.
Nick
[email protected]
[email protected]
Thanks for the help on this but the procedure does not quite
do it. Or,
more precisely, it overdoes it. That is, instead of replacing with a
missing value only the entry time for the first record for
every fifth
multiple-record case, it replaces all entry times with
missing values for
all records in every fifth multiple-record case. I am aiming
to replace
only the first entry time value in the first record for every fifth
multiple-record case.
--On Thursday, November 04, 2004 1:45 AM +0000 Nick Cox
<[email protected]> wrote:
> Correct. I guess the -egen- should just select those cases.
>
> . bysort whateverisyourid : gen multiple = _N > 1
> . egen id = group(whateverisyourid) if multiple
> . bysort id (entrytime):
> replace somevar = . if _n == 1 & mod(id,5) == 0
>
Keith Dear
>> But celdjt said he wanted to do this for every fifth
>> *multiple-record*
>> case. He could first drop the single-record cases, apply
>> Nick's code, then
>> append them back. Or is there a neater way?
>> kd
>>
>> > Suppose your identifiers run 1, 2, ... . If this isn't true,
>> >
>> > . egen id = group(whateverisyourid)
>> >
>> > will make it so.
>> >
>> > Now, if I understand you correctly, you want to
>> >
>> > . bysort id (entrytime):
>> > replace somevar = . if _n == 1 & mod(id,5) == 0
>> > [email protected]
>> >
>> > > My
>> > > question is about making an adjustment to the surrogate
>> data set. The
>> > > surrogate data set contains about 3500 cases, some of which
>> > > have just one
>> > > record per case, and others have multiple records. Each
>> record has a
>> > > variable recording an entering time and an exit time for
>> that record.
>> > > Hence, single record cases have one entry time and one exit
>> > > time; multiple
>> > > record cases have multiple entry and multiple exit times. I
>> > > would like to
>> > > convert the first entry time for every fifth multiple-record
>> > > case in this
>> > > data set into a missing value. Are there any suggestions for
>> > > how this might be done.
*
* 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/