Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have a very large dataset but to cut it short I demonstrated the data with the following example:

* Example generated by -dataex-. To install: ssc install dataex
clear
input float(patid death dateofdeath)
 1 0     .
 2 0     .
 3 0     .
 4 0     .
 5 1 15007
 6 0     .
 7 0     .
 8 1 15526
 9 0     .
10 0     .
end
format %d dateofdeath

I am trying to sample for a case-control study based on date of death. At this stage, I need to first create a variable with each date of death repeated for all the participants (hence we end up with a dataset with 20 participants) and a pairid equivalent to the patient id patid of the corresponding case.

I created a macro for one case (which works) but I am finding it difficult to have it repeated for all cases (where death==1) in a loop.

The successful macro is as follows:

local i "5" //patient id who died 
     
gen pairid= `i'
gen matchedindexdate = dateofdeath
replace matchedindexdate=0 if pairid != patid
gsort matchedindexdate
replace matchedindexdate= matchedindexdate[_N]
format matchedindexdate %d
save temp`i'

and the loop I attempted is:

* (min and max patid id)     
forval j = 1/10  {
    count if patid == `j' & death==1
    if r(N)=1 {
        gen pairid= `j'
        gen matchedindexdate = dateofdeath
        replace matchedindexdate=0 if pairid != patid
        gsort matchedindexdate
        replace matchedindexdate= matchedindexdate[_N]
        save temp/matched`j'
    }
}

use temp/matched1, clear
forval i=2/10 {
    capture append using temp/matched`i'
    save matched, replace
}

but I get:

invalid syntax

How can I do the loop?

question from:https://stackoverflow.com/questions/65943698/how-to-create-a-loop-for-a-macro-in-stata

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
159 views
Welcome To Ask or Share your Answers For Others

1 Answer


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...