xtsum.ado

来自「是一个经济学管理应用软件 很难找的 但是经济学学生又必须用到」· ADO 代码 · 共 122 行

ADO
122
字号
*! version 1.0.9  06aug2004
program xtsum, rclass byable(recall) sort
	version 6, missing
	syntax [varlist(ts)] [if] [in] [, I(varname)]
	xt_iis `i'
	local ivar "`s(ivar)'"
	capture tsset
	if _rc == 0 {
		local ivar `r(panelvar)'
		local tvar `r(timevar)'
	}

	tempname N n Tbar mean sdo min max sdb sdw minb maxb minw maxw
	tempvar touse tu bv wv Ti
	mark `touse' `if' `in'

	di in smcl in gr _n "Variable" _skip(9) "{c |}" _skip(6) /*
	*/ "Mean   Std. Dev.       Min        Max {c |}    Observations" /*
	*/ _n "{hline 17}{c +}{hline 44}{c +}{hline 16}"

	sort `ivar' `tvar'
	tokenize `varlist'
	while "`1'"!="" {
		quietly {
			gen byte `tu' = `touse' & `1'<.
			summ `1' if `tu'
			scalar `N' = r(N)
			scalar `mean' = r(mean)
			scalar `sdo'  = cond(`N'>1,sqrt(r(Var)),.)
			scalar `min'  = r(min)
			scalar `max'  = r(max)
			by `ivar': gen long `Ti' = /*
				*/ cond(_n==_N,sum(cond(`tu',1,0)),.)
			by `ivar': gen double `bv'= cond(_n==_N, /*
				*/ sum(cond(`tu',`1',0)) / `Ti', . )
			summ `Ti' if `tu'
			* scalar `Tbar' = cond(r(mean)>=.,0,r(mean))
			if r(min)==r(max) {	/* min == max */
				local wrd "    T"
			}
			else	local wrd "T-bar"
			drop `Ti'
			by `ivar': gen double `wv' = /*
				*/ cond(`tu',`1'-`bv'[_N], .) /* + `mean' */
		}
		#delimit ;
		di in smcl in gr /*
			*/ abbrev("`1'",8) _col(10) "overall {c |} " in ye 
			%9.0g `mean' "  "
			%9.0g `sdo' "  "
			%9.0g `min' "  "
			%9.0g `max' in gr " {c |}" 
			_col(69) "N =" %8.0f `N' ;
		qui summ `bv' ;
		scalar `n' = r(N) ;
		scalar `sdb' = cond(`n'>1,sqrt(r(Var)),.) ;
		scalar `minb' = r(min) ;
		scalar `maxb' = r(max) ;
		di in smcl in gr _col(10) "between {c |}" _col(31) in ye
			%9.0g `sdb' "  "
			%9.0g `minb' "  "
			%9.0g `maxb' in gr " {c |}" 
			_col(69) "n =" %8.0f r(N) ;
		qui summ `wv' ;
		scalar `sdw' = cond(r(N)>1,sqrt(r(Var)),.) ;
		scalar `minw' = r(min) + `mean' ;
		scalar `maxw' = r(max) + `mean' ;
		scalar `Tbar' = `N'/`n' ;
		di in smcl in gr _col(10) "within  {c |}" _col(31) in ye
			%9.0g `sdw' "  "
			%9.0g `minw' "  "
			%9.0g `maxw' in gr 
			" {c |} `wrd' =" %8.0g `Tbar' ;
		#delimit cr
		drop `wv' `bv' `tu'

		ret scalar N     = `N'
		ret scalar n     = `n'
		ret scalar Tbar  = `Tbar'
		ret scalar mean  = `mean'
		ret scalar sd    = `sdo'
		ret scalar min   = `min' 
		ret scalar max   = `max'
		ret scalar sd_b  = `sdb'
		ret scalar min_b = `minb'
		ret scalar max_b = `maxb'
		ret scalar sd_w  = `sdw'
		ret scalar min_w = `minw'
		ret scalar max_w = `maxw'

		* double saves
		scalar S_1 = `N'
		scalar S_2 = `n'
		scalar S_3 = `Tbar'
		scalar S_4 = `mean'
		scalar S_5 = `sdo'
		scalar S_6 = `min' 
		scalar S_7 = `max'
		scalar S_8 = `sdb'
		scalar S_9 = `minb'
		scalar S_10= `maxb'
		scalar S_11 = `sdw'
		scalar S_12 = `minw'
		scalar S_13 = `maxw'

		mac shift
		if "`1'"!="" {
			di in smcl in gr _col(18) "{c |}" _col(63) "{c |}"
		}
	}
end
exit
. sum cost avgcost dcost

Variable         |      Mean   Std. Dev.       Min        Max |    Observations
-----------------+--------------------------------------------+----------------
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
longlong overall | 123456789  123456789      3.154     191.56 |     N =12345678
longlong overall |  44.44588   46.30909      3.154     191.56 |     N =12345678
         between |             44.57574     4.4645    125.584 |     n =      22
         within  |             20.41346  123456789  912345678 | T-bar =       6

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?