Вы можете легко написать оболочку для 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)
«Кодовая книга» не сохраняет количество отчетных данных как уникальных значений. Для обзора этой территории см. Http://www.stata-journal.com/sjpdf.html?articlenum=dm0042 –
Спасибо Нику за эту полезную ссылку. – emeryville