2012-01-09 50 views
1

我想創建一個5×5格的tabulate twoway頻率計數表,如下表所示。Stata的「tabtable twoway」頻率計數表的5乘5矩陣

enter image description here

生成每個子表很容易與嵌套foreach循環,但長列表輸出是比較困難的比5×5網格來解釋(並具有冗餘條目 - 它提供兩個半部對稱矩陣)。

是否有可能在Stata中製作這樣的表格?爲了清楚起見,我可以稍後弄清楚LaTeX,我只是想獲得簡潔明瞭的控制檯輸出。

謝謝!下面是一些代碼,它使用auto數據來完成基礎知識,但會生成一個列表而不是矩陣。 xtileegenmore

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' 
    } 
} 

回答

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' 

這是一個有點類似於我叫meantab程序,在http://code.google.com/p/kk-adofiles/

+0

這就行了!我是一個Stata轉換器(來自R和Matlab),Stata的矩陣語言很難實現,直到有人展現出正確的視角。謝謝! – 2012-01-09 17:31:32

+0

如果你從Matlab來到Stata,請查看Stata的「mata」功能。這幾乎是一樣的。 – Keith 2012-04-09 00:05:26