2016-05-07 4 views
0

codebook - отличная команда в Stata. Он описывает содержание данных, но и просто определяет уникальные значенияПодсчет уникальных значений в Stata

sysuse auto, clear 
codebook mpg, compact 

Количество уникальных значений миль на галлон 21. Глядя на помощь команды, это не представляется возможным, чтобы сохранить это значение. Я ошибаюсь?

Мне известно о других способах вычисления number of unique values в Stata, но было бы удобно добавить эту функцию в команду codebook.

+0

«Кодовая книга» не сохраняет количество отчетных данных как уникальных значений. Для обзора этой территории см. Http://www.stata-journal.com/sjpdf.html?articlenum=dm0042 –

+0

Спасибо Нику за эту полезную ссылку. – emeryville

ответ

2

Вы можете легко написать оболочку для codebook, который использует distinct команды Ника от SSC, чтобы сохранить информацию, которую Вы хотите, как скаляр (ов).

По моему опыту, это обертка подход оказался гораздо более эффективным, чем задавать хорошие люди на StataCorp изменить свою команду на интернет-форуме, что они не участвуют в

Вот пример:.

/* (1) You can stick this into a file called mycodebook.ado in /ado/personal (use adopath to see exact location) */ 
capture program drop mycodebook 
program mycodebook, rclass 
syntax [varlist] [if] [in][, *] 
codebook `varlist' `if' `in', `options' 
capture ssc install distinct 
foreach var of varlist `varlist' { 
    qui distinct `var' `if' `in' 
    return scalar nv_`var' = r(ndistinct) 
} 
end 

/* (2) example with mycodebook */ 
sysuse auto, clear 
mycodebook price mpg rep78 if foreign==0, compact 
return list 

Эта последняя часть даст вам:

. mycodebook price mpg rep78 if foreign==0, compact 

Variable Obs Unique  Mean Min Max Label 
------------------------------------------------------------------------------------------------- 
price  52  52 6072.423 3291 15906 Price 
mpg   52  17 19.82692 12  34 Mileage (mpg) 
rep78  48  5 3.020833  1  5 Repair Record 1978 
------------------------------------------------------------------------------------------------- 

. return list 

scalars: 
      r(nv_rep78) = 5 
      r(nv_mpg) = 17 
      r(nv_price) = 52 

вы можете делать вещи, как (или то, что вы хотите сделать с этим):

gen x=r(nv_rep78) 
+0

Это отличное решение, спасибо. – emeryville

+1

Последнюю версию 'distinct' (авторы Gary Longton и я) должны быть загружены с сайта _Stata Journal_. 'search distinct, sj' в Stata, чтобы получить ссылку для установки. –

1

да, то вы ошибаетесь

ssc install egenmore 
egen unique_values=nvals(mpg) 
+0

Боюсь, я не ошибаюсь! Спасибо, но я заинтересован в сохранении этого значения после 'codebook', и это кажется невозможным. См. Ответ Ника. – emeryville

+0

вы можете в принципе воспроизвести каждый вывод кодовой книги вручную. и nvals дает вам уникальные значения –

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - [Из обзора] (/ review/low-quality-posts/12412472) –

Смежные вопросы