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