Получить количество уровней категориальной переменной как одно число в Stata
Я пытаюсь найти способ получить количество уровней категориальной переменной в виде одного числа. Например, если у меня есть переменная X
с 4 уровнями мне нужно как-то получить это число. Если я наберу levelsof X
Я получаю следующее 1 2 3 4
но я не могу получить только номер 4 оттуда. Есть ли способ сделать это с помощью levelsof
или другая команда?
2 ответа
Различные команды предоставят вам количество различных значений для любой переменной. ("Категориальная переменная" является статистической концепцией, а не концепцией 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
Подробный обзор этой проблемы, представленный более широко, доступен здесь. Эта статья представляет distinct
команда. Его использование включает в себя прямую поддержку систематического просмотра количества различных значений. search distinct
в Stata, чтобы найти источник загрузки для самой последней версии.
. 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
Вы можете посмотреть на 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.