<>
Well, the "__000000" thing is the internal name for the temp you
created. I
wanted to point out that this compares the FIRST observation and its
"touse"
value. If the first value of "touse" is one, then this statement is
true,
otherwise false. Maybe that is what you want, maybe not...
*************
sysuse auto, clear
if mpg>20{
di in red "MPG bigger than 20"
}
if mpg>25{
di in red "MPG bigger than 25"
}
list mpg in 1
*************
HTH
Martin
-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Ilona
Carneiro
Gesendet: Mittwoch, 25. Februar 2009 17:51
An: [email protected]
Betreff: Re: st: AW: Problem looping over spells for an individual
HI Martin
I tried checking this before, but I didn't know how to interpret it.
With tr: byid I get:
if __000000 {
But I don't know what that means?
Ilona
On 25 Feb 2009, at 17:39, Martin Weiss wrote:
<>
Are you sure the line
*************
if `touse' {
*************
does what you want it to? -set trace on- or indeed use the recently
announced -ssc d tr- and report what happens...
HTH
Martin
-----Ursprüngliche Nachricht-----
Von: [email protected]
[mailto:[email protected]] Im Auftrag von Ilona
Carneiro
Gesendet: Mittwoch, 25. Februar 2009 17:24
An: [email protected]
Betreff: st: Problem looping over spells for an individual
Hello all
I am trying to write a programme that will run a command sequentially
for observations of an individual. For each individual I have
multiple
spells and multiple failures. However, the twist is that I also need
to exclude a period of time at risk after each treatment
(prophylaxis)
and after each failure (to prevent double-counting of failures that
may actually be the same episode). I managed to do this without any
problem for the treatment, but if an episode is disqualified (by a
prior treatment or episode) I don't want it to disqualify a
subsequent
episode. Therefore I need to run the code sequentially for each spell
of an individual, but using the marksample touse code to run it "by"
individual doesn't seem to be working - the "forvalues" seems to
always interpret _N as the last observation in the whole dataset, not
the last observation for each individual.
I have the following code:
program define byid, byable(recall, noheader)
marksample touse
sort `id' `start'
if `touse' {
forvalues i = 1(1)`=_N' {
replace lagend = (`end' + `lag') if ((`tx' > 0 & `tx' < .) |
(`case'
0 & `case' < .))
drop if lagend[`i'-1]>`end' & `id'[`i'-1]==`id'
}
}
end
gen lagend=.
qui by id: byid
but I get the error:
2nd by group not found
r(111);
And the programme isn't doing what I need it to.
Any ideas?
Ilona
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/