In trying to clean up my code, I've run into a roadblock. I'm trying to create a dummy variable based on two conditions in a loop in a neater way.
Below is how I originally coded it:
Code:
drop _all clear all set obs 179 egen regid = seq(), to(30) egen month = seq(), from(540) to(719) #delimit ; forvalues i=1(1)10{ ; gen es`i' = 0 ; replace es`i' = 1 if fbtdate == (`i' -9) ®id == 1 | fbtdate == (`i' -9) ®id == 2 | fbtdate == (`i' -9) ®id == 3 | fbtdate == (`i' -9) ®id == 4 | fbtdate == (`i' -9) ®id == 5 | fbtdate == (`i' -9) ®id == 6 | fbtdate == (`i' -9) ®id == 7 | fbtdate == (`i' -9) ®id == 8 | fbtdate == (`i' -9) ®id == 9 | fbtdate == (`i' -9) ®id == 10 | fbtdate == (`i' -9) ®id == 11 | fbtdate == (`i' -9) ®id == 12 | fbtdate == (`i' -9) ®id == 13 | fbtdate == (`i' -9) ®id == 17 | fbtdate == (`i' -9) ®id == 18 | fbtdate == (`i' -9) ®id == 19 | fbtdate == (`i' -9) ®id == 23 | fbtdate == (`i' -9) ®id == 24 | fbtdate == (`i' -9) ®id == 25 | fbtdate == (`i' -9) ®id == 26 | fbtdate == (`i' -9) ®id == 27 | fbtdate == (`i' -9) ®id == 28 ; };
In trying to clean it up, I've coded it this way:
Code:
drop _all clear all set obs 179 egen regid = seq(), to(30) egen month = seq(), from(540) to(719) #delimit ; gen fbtdate = month - ym(2016, 07) + 1; forvalues i=1(1)10{ ; gen es`i' = 0 ; replace es`i' = 1 if fbtdate == (`i' -9) & regid == inlist(1, 2, 3); };
Thank you
0 Response to Using inlist when with multiple & and or ( | ) statements to create dummies within a loop
Post a Comment