*! Omar M.G. Keshk *! PROGRAM TO CREATE PROPER DYADIC DATA SETS FOR USE WITH SCOMPUTE *! JUNE 10,2009 program define sdyads syntax varlist (min=5 max = 5), newfile(string) local file = "$S_FN" preserve tempfile one two three four tempvar a b d e tokenize `varlist' keep `varlist' qui save `one', replace qui gen `a' = `2' qui gen `b' = `1' qui gen `d' = `5' qui gen `e' = `4' qui drop `1' `2' `4' `5' qui rename `a' `1' qui rename `b' `2' qui rename `d' `4' qui rename `e' `5' qui save `one', replace qui use `file', replace qui append using `one' qui save `two', replace qui save `four', replace qui save `three', replace tempvar z zz qui keep `1' `3' qui gen `z' = `1' qui sort `1' `z' `3' qui order `1' `z' `3' qui makeid `1' `z' `3' qui drop if idvar[_n]==idvar[_n-1] qui drop idvar qui rename `z' `2' qui save `three', replace qui use `two', replace qui append using `three' qui save `two', replace qui use `four', replace qui keep `2' `3' qui gen `zz' = `2' qui sort `2' `zz' `3' qui order `2' `zz' `3' qui makeid `2' `zz' `3' qui drop if idvar[_n]==idvar[_n-1] qui drop idvar qui rename `zz' `1' qui order `1' `2' `3' qui save `three', replace qui use `two', replace qui append using `three' qui save `two', replace qui makeid `1' `2' `3' qui drop if idvar[_n]==idvar[_n-1] qui drop idvar qui save `newfile', replace end program define makeid syntax varlist [if] [in], [idvar(string)] tempvar touse mark `touse' `if' `in' qui sort `varlist' if "`idvar'"~= "" { qui by `varlist': gen `idvar' = 1 if _n==1 & `touse' qui replace `idvar' = sum(`idvar') if `touse' } else{ qui by `varlist': gen idvar = 1 if _n==1 & `touse' qui replace idvar = sum(idvar) if `touse' } end