在Stata中获取分类变量的级别数作为单个数字

时间:2015-07-08 09:47:57

标签: stata levels

我试图找到一种方法来将分类变量的级别数量作为单个数字。例如,如果我有一个具有4个级别的变量return $query->row_array(); ,我需要以某种方式获得该数字。如果我输入X,我会收到以下levelsof X,但我无法从那里获得第4名。有没有办法使用1 2 3 4或其他命令?

2 个答案:

答案 0 :(得分:3)

对于任何类型的变量,各种命令都会为您提供不同值的数量。 (“分类变量”是一个统计概念,而不是Stata概念。)也许最简单的一次性目的是使用tabulate要求单向制表。然后,不同值的数量是该表中的行数,返回为r(r)。请注意,(1)您可以抑制表本身(在程序或文件中很有用)和(2)默认情况下排除缺失值:

. sysuse auto, clear
(1978 Automobile Data)

. qui tab foreign

. ret li

scalars:
                  r(N) =  74
                  r(r) =  2

. qui tab rep78

. ret li

scalars:
                  r(N) =  69
                  r(r) =  5

. qui tab rep78, missing

. ret li

scalars:
                  r(N) =  74
                  r(r) =  6

可以更广泛地对这个问题进行扩展审查here。该论文介绍了distinct命令。它的用途包括直接支持系统地查看不同值的数量。在Stata中search distinct查找最新版本的下载源。

. distinct

              |           Observations
              |         total      distinct
--------------+----------------------------
         make |            74            74
        price |            74            74
          mpg |            74            21
        rep78 |            69             5
     headroom |            74             8
        trunk |            74            18
       weight |            74            64
       length |            74            47
         turn |            74            18
 displacement |            74            31
   gear_ratio |            74            36
      foreign |            74             2

答案 1 :(得分:1)

您可以在r(r)之后查看levelsof

. sysuse auto
(1978 Automobile Data)

. levelsof rep78
1 2 3 4 5

. display "rep78 has " `r(r)' " levels."
rep78 has 5 levels.