2016-05-07 11 views
0

codebook ist ein großer Befehl in Stata. Es beschreibt Dateninhalte, sondern auch identifiziert einfach eindeutige WerteZähle einzigartige Werte in Stata

sysuse auto, clear 
codebook mpg, compact 

Anzahl der eindeutigen Werte von mpg 21 auf der Hilfe des Befehls Suche, ist es nicht möglich sein, diesen Wert zu speichern. Liege ich falsch?

Ich kenne andere Möglichkeiten, um die number of unique values in Stata zu berechnen, aber es wäre so bequem, diese Funktion zum codebook Befehl hinzuzufügen.

+0

'codebook' speichert nicht die Anzahl dessen, was es als eindeutige Werte meldet. Für eine Überprüfung dieses Gebiets, siehe http://www.stata-journal.com/sjpdf.html?articlenum=dm0042 –

+0

Danke Nick für diese nützliche Referenz. – emeryville

Antwort

2

falsch Sie leicht einen Wrapper für codebook die distinct Befehl von SSC Nick nutzt schreiben können die Informationen, die Sie als skalare speichern möchten (s).

Nach meiner Erfahrung hat sich diese Wrapper-Ansatz bewährt viel effektiver sein als die netten Leute bei StataCorp fragen ihren Befehl auf einem Internet-Forum, dass sie in nicht teilnehmen zu ändern

Hier ein Beispiel:.

/* (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 

wird dieser letzte Teil, den Sie geben:

. 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 

Sie dann Dinge tun kann, wie (oder was auch immer es ist, wollen Sie mit diesen zu tun):

gen x=r(nv_rep78) 
+0

Das ist eine großartige Lösung, danke. – emeryville

+1

Die neueste Version von 'distinct' (Autoren Gary Longton und ich) soll von der _Stata Journal_ Website heruntergeladen werden. 'suche distinct, sj' in Stata, um einen Link für die Installation zu erhalten. –

1

ja, sind Sie

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

Ich fürchte, ich liege nicht falsch! Danke, aber ich bin daran interessiert, diesen Wert nach "Codebuch" zu speichern und es scheint nicht möglich. Sieh Nicks Antwort. – emeryville

+0

Sie können grundsätzlich jede Ausgabe des Codebuchs manuell reproduzieren. und nvals gibt Ihnen eindeutige Werte –

+0

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/12412472) –