2012-01-09 3 views
1

Я хотел бы создать сетку 5 на 5 из tabulate twoway таблиц счетчика частоты, как в следующей таблице.5-на-5 матрица таблиц счетчиков частоты «tabulate twoway` в Stata

enter image description here

Создание каждого суб-таблицу легко с вложенными foreach петель, но длинный выходной список более трудно интерпретировать, чем сетке 5 × 5 (и имеет избыточные записи - это обеспечивает обе половинки симметричной матрицы).

Возможно ли сделать такой стол в Стате? Чтобы быть ясным, я могу позже выяснить 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' 
    } 
} 

ответ

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 - очень сложный, пока кто-то не покажет правильную перспективу. Благодаря! –

+0

Если вы приезжаете в Stata из Matlab, ознакомьтесь с возможностями Stata «mata». Это почти то же самое. – Keith