按值折叠

时间:2016-04-26 09:08:12

标签: stata frequency collapse

我有一个看起来像这样的数据集(var1var2var3,......的可能值为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 ......)

我想要按值(1,2,3,4,5,6)折叠var1 var2 var3 ...的值的计数,并创建一个这样的数据集:

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)命令,但我没有分组变量。有没有办法按变量汇总变量?

1 个答案:

答案 0 :(得分: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选项,可将列表另存为新数据集。