capture program drop rdrandinf2docx program define rdrandinf2docx syntax anything, Prefix(string) Count(string) [VARNAME(string) TItle(string) FONT(string) FONTSize(string) FILEname(string)] if "`title'" == "" local title = "rdrandinf 估计结果" if "`varname'" == "" local varname = "变量名" if "`font'" == "" local font = "Times New Roman" if "`fontsize'" == "" local fontsize = 18 if "`filename'" == "" local filename = 18 qui{
cap mkdir "retlist" foreach i in `anything' { infix strL `i' 1-20000 using "`i'.log", clear keep if index(`i', "r(") split `i', parse("=" ":") drop `i' ren `i'1 id1 ren `i'2 `i' gen id = _n save retlist/`i', replace }
clear mergeall id using "retlist", dta drop id foreach i in `anything' { replace `i' = subinstr(`i', `"""', "", .) destring `i', replace } replace id1 = subinstr(id1, " ", "", .) save retdata, replace
putdocx clear putdocx begin, pagesize(A4) font(Times New Roman) putdocx paragraph, spacing(after, 0) halign(center) valign(center)
putdocx text (`"`title'"'), font("`font'", `fontsize') linebreak
putdocx table mytable = (8, `=`count'+1'), width(100%) halign(center) border(all, nil) border(top) border(bottom) cellmargin(top, 0.1cm) cellmargin(bottom, 0.1cm) cellmargin(left, 0.1cm) cellmargin(right, 0.1cm)
putdocx table mytable(1, 1) = ("变量") forval i = 1/`count'{ putdocx table mytable(1, `=`i'+1') = ("(`i')") }
putdocx table mytable(2, 1) = ("`varname'") preserve keep if id1 == "r(obs_stat)" | id1 == "r(randpval)" | id1 == "r(asy_pval)" forval i = 1/`count'{ if `=retlist`i'[3]' < 0.1 local star = "*" if `=retlist`i'[3]' < 0.05 local star = "**" if `=retlist`i'[3]' < 0.01 local star = "***" putdocx table mytable(2, `=`i'+1') = (`"`=string(`=retlist`i'[1]', "%6.2f")'`star'"'), linebreak putdocx table mytable(2, `=`i'+1') = (`"[`=string(`=retlist`i'[2]', "%6.4f")']"'), append } restore
putdocx table mytable(3, 1) = ("95% 置信区间") preserve keep if id1 == "r(int_lb)" | id1 == "r(int_ub)" forval i = 1/`count'{ putdocx table mytable(3, `=`i'+1') = (`"[`=string(`=retlist`i'[1]', "%6.2f")', `=string(`=retlist`i'[2]', "%6.2f")']"') } restore
putdocx table mytable(4, 1) = ("对 y 多项式变换阶数") preserve keep if id1 == "r(p)" forval i = 1/`count'{ putdocx table mytable(4, `=`i'+1') = (`=retlist`i'[1]') } restore
putdocx table mytable(5, 1) = ("左窗口") preserve keep if id1 == "r(wl)" forval i = 1/`count'{ putdocx table mytable(5, `=`i'+1') = (`"`=string(`=retlist`i'[1]', "%6.2f")'"') } restore
putdocx table mytable(6, 1) = ("右窗口") preserve keep if id1 == "r(wr)" forval i = 1/`count'{ putdocx table mytable(6, `=`i'+1') = (`"`=string(`=retlist`i'[1]', "%6.2f")'"') } restore
putdocx table mytable(7, 1) = ("左侧 N") preserve keep if id1 == "r(N_left)" forval i = 1/`count'{ putdocx table mytable(7, `=`i'+1') = (`"`=retlist`i'[1]'"') } restore
putdocx table mytable(8, 1) = ("右侧 N") preserve keep if id1 == "r(N_right)" forval i = 1/`count'{ putdocx table mytable(8, `=`i'+1') = (`"`=retlist`i'[1]'"') } restore
putdocx table mytable(., .), valign(center) halign(center)
putdocx table mytable(1, .), border(top, single) border(bottom, single) }
putdocx save "`filename'.docx", replace
foreach i in `anything' { cap erase "`i'.log" cap erase "retlist/`i'.dta" } cap erase retdata.dta end
|
评论