2016-04-26 4 views
0

У меня есть набор данных, который выглядит следующим образом (var1, var2, var3, ... имеет возможные значения 1,2,3,4,5,6).Свернуть эту таблицу

var1 (3,3,4,1,2,4,5,6 ...) var2 (4,5,2,2,3,1,6,6 ...) var3 (1, 2,2,4,2,3,6,5 ...)

И я хотел бы свернуть счетчик значений var1 var2 var3 ... по значениям (1,2,3,4,5) , 6) и создать набор данных, как это:

value (1,2,3,4,5,6)

var1_count (1,1,2,2,1,1)

var2_count (1,2,1,1,1,2)

var3_count (1,3,1,1,1,1)

Я попробовал команду collapse(count), но у меня нет группировки переменная. Есть ли способ агрегировать переменные по их значениям?

+0

Можете ли вы отформатировать сообщение? Вы можете использовать апостроф для разделения 'ваших значений' или' ваших кодов'. Вы можете оставить две линии, чтобы отделить ваши параграфы. – ykaragol

+1

@ M.Pflaumbaum Лучше добавить эти данные прямо в свой вопрос, а не как комментарий. – lmo

ответ

2

Пожалуйста, прочитайте рекомендации по MCVE: https://stackoverflow.com/help/mcve

Ваши данные могут быть считаны в следующим образом.

clear 

mat var1 = (3,3,4,1,2,4,5,6) 
mat var2 = (4,5,2,2,3,1,6,6) 
mat var3 = (1,2,2,4,2,3,6,5) 

set obs 8 
forval j = 1/3 { 
    gen var`j' = var`j'[1, _n] 
} 

list, sep(0) 

    +--------------------+ 
    | var1 var2 var3 | 
    |--------------------| 
    1. | 3  4  1 | 
    2. | 3  5  2 | 
    3. | 4  2  2 | 
    4. | 1  2  4 | 
    5. | 2  3  2 | 
    6. | 4  1  3 | 
    7. | 5  6  6 | 
    8. | 6  6  5 | 
    +--------------------+ 

Один из способов получить, что подведение является установкой tabm использования

ssc install tab_chi 
help tabm 
tabm var? 

      |        values 
    variable |   1   2   3   4   5   6 |  Total 
-----------+------------------------------------------------------------------+---------- 
     var1 |   1   1   2   2   1   1 |   8 
     var2 |   1   2   1   1   1   2 |   8 
     var3 |   1   3   1   1   1   1 |   8 
-----------+------------------------------------------------------------------+---------- 
    Total |   3   6   4   4   3   4 |  24 

tabm также предлагает replace возможности сохранить табуляцию в качестве нового набора данных.

+0

Спасибо большое Ник, я попытался сохранить табуляцию по 'tabm var *, replace', и я получил набор данных из двух переменных:' _stack' и '_values'.
_stack (var1, var2, var3 ...)
_values ​​(3,3,4,1,2,4,5,6,4,5,2,2,3,1,6,6,1) , 2,2,4,2,3,6,5)
Как генерировать счетчики 1,2,3,4,5,6 в качестве частотных переменных? –

+0

'contract _values ​​_stack', за которым следует' reshape wide _freq, i (_stack) j (_values) 'может быть то, о чем вы просите. –