2016-05-26 12 views
1

Ich habe einen Datensatz mit mehreren Variablen. Ich möchte eine Subsample erstellen, die nur die Beobachtungen enthält, die Daten für alle Variablen enthalten, also keine fehlenden Daten in einer Variablen.Behalte nur Beobachtungen mit Daten für alle Variablen

Ich weiß über den dropmiss Befehl in Stata, aber das gilt hier nicht, weil ich Variablen nicht löschen möchte, aber ich möchte die Beobachtungen fallen lassen.

Ich habe eine ähnliche Frage wie meine in Stack Overflow gefunden, aber das dort verwendete Statistikprogramm ist SAS und ich verwende Stata. (SAS - Keeping only observations with all variables).

Ein Beispiel (das ist eine fehlende Daten „“):

ID year pension age gender 
1 2006 300 54 F 
2 2007 250 40 M 
3 2006 .  45 M 
4 2005 .  . F 

Also in diesem Fall möchte ich nur ID halten 1 und 2, und drop 3 und 4 von der Probe, da es enthält fehlt Daten für einige der Variablen.

Antwort

0

Die Antwort ist ziemlich einfach, vorausgesetzt, Sie haben eine begrenzte Anzahl von Variablen. Typ Nur:

keep if !missing(var1) & !missing(var2) & !missing(var3) 

Dieser Befehl hält nur Zeilen, die nicht fehlenden Werte aller der oben genannten drei Variablen haben. Fühlen Sie sich frei, mehr hinzuzufügen.

+2

'keep if! Missing (var1, var2, var3)' hat den gleichen Effekt. –

+1

Vielen Dank! Es hat funktioniert :) – Karin

+0

yihaa dann bitte akzeptieren Sie meine Antwort :) –

2

Die Aussage über dropmiss (Download von Stata Journal Website nach search dropmiss) ist falsch.

dropmiss hat eine obs Option, die auf diesen Bedarf ausgerichtet ist.

. sysuse auto, clear 
(1978 Automobile Data) 

. dropmiss, obs 
(0 observations deleted) 

. dropmiss, obs any 
(5 observations deleted) 

jedoch dropmiss vom Autor betrachtet wird (das bin ich) durch missings abgelöst werden (Download in ähnlicher Weise von Stata Journal Website). missings unterstützt dies nicht direkt, da die Erwägung, ob fehlende Werte durch Mehrfachimputation behandelt werden können, allgemein als bessere statistische Praxis angesehen wird.

Aber wenn Sie darauf bestehen, können missings mit diesem helfen:

. sysuse auto, clear 
(1978 Automobile Data) 

. missings tag, gen(anymiss) 

Checking missings in all variables: 
5 observations with missing values 

. drop if anymiss 
(5 observations deleted) 

Es gibt eine egen Funktion rowmiss(), die in ähnlicher Weise verhält.

Der Schlüssel hier ist, dass Sie die betreffenden Variablennamen nicht buchstabieren müssen. Aber pass auf: Diese Befehle können sehr destruktiv sein.

+0

Nick danke für die Klarstellung, aber ich hoffe, ich bekomme die Antwort obwohl! –

+1

Wenn du meinst, welche Antwort akzeptiert wird, liegt das eindeutig außerhalb meiner Kontrolle. Wenn ein Benutzer tausend Variablen hätte, würden sie nicht alle ihre Namen eingeben wollen. –

Verwandte Themen