我想创建一个5乘5的tabulate twoway
频率计数表网格,如下表所示。
使用嵌套的foreach
循环生成每个子表很容易,但是长列表输出比5乘5的网格更难解释(并且具有冗余条目 - 它提供了两个部分对称矩阵)。
是否有可能在Stata制作这样的桌子?为了清楚起见,我可以稍后弄清楚LaTeX,我只是想获得清晰简洁的控制台输出。
谢谢!下面是一些使用auto
数据执行基础知识的代码,但生成列表而不是矩阵。 xtile
来自egenmore
包
sysuse auto, clear
global vars price mpg headroom trunk weight
foreach x of global vars {
egen d_`x' = xtile(`x'), nquantiles(2)
}
* can make diagonal entries
tabulate d_price d_price
* can make off-diagonal entries
tabulate d_price d_mpg
* crude solution that generates list output with redundant entries
foreach x of global vars {
foreach y of global vars {
tabulate d_`x' d_`y'
}
}
答案 0 :(得分:3)
我在循环中添加了一些矩阵运算。
tempname col all tabout
foreach x of global vars {
foreach y of global vars {
qui tabulate d_`x' d_`y', matcell(`tabout')
mat colnames `tabout' = `x' `x'
mat rownames `tabout' = `y' `y'
mat `col' = (nullmat(`col') \ `tabout' )
}
mat `all'= (nullmat(`all') , `col')
mat drop `col'
}
mat list `all'
这与http://code.google.com/p/kk-adofiles/
上名为meantab
的程序有点类似