Stata 6: Was mache ich, wenn der Befehl, den ich brauche, nicht mit by verwendet werden kann?
Title | Stata 6: Verwenden von while-Schleifen, wenn der by-Befehl keine Option ist | |
Autor | Jeremy B. Wernow, StataCorp |
Es gibt mehrere Befehle in Stata, die den Befehl by nicht als Option zulassen. Zwei Beispiele sind der Befehl tab1 und die Befehle graph mit der Option saving(). Eine Möglichkeit, diese Funktion zu umgehen, besteht darin, den Befehl, den Sie ausführen möchten, in eine while-Schleife einzufügen:
Das funktioniert nicht. Wir wissen jedoch, dass rep78 Werte zwischen 1 und 5 hat, also versuchen wir eine while-Schleife in einer do-Datei:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
Hier ist die Ausgabe der Ausführung dieser Datei:
Was ist, wenn rep78 fehlende Werte hat? In diesem Fall können Sie mit dem Befehl egen eine neue Variable erstellen, die jeden Wert in rep78 kategorisiert.
Hier ist die geänderte do-Datei:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
Wenn Sie die Option missing mit dem Befehl egen verwenden, werden die fehlenden Werte von rep78 mit einem Wert von 6 codiert (beachten Sie, dass rep78 Werte von 1 bis 5 hat). Beachten Sie, dass die Ausgabe dieser do-Datei nun auch Tabellen für mpg und price für die fehlenden Werte von rep78 enthält.
Gehen wir nun zu einem schwierigeren Beispiel über. Ein Benutzer wollte kürzlich den Befehl by mit dem Befehl graph und der Option saving() verwenden.
by kann aufgrund von Benennungsproblemen nicht mit der Option graph, saving() verwendet werden (wie würden Sie jedes einzelne Diagramm benennen?). Dies kann mit einer anderen do-Datei gelöst werden:
local i = 1 egen y = group(rep78), missing while `i' <=6 { graph mpg price if y == `i', saving(graph`i',replace) local i = `i' + 1 }
Die Ausgabe dieser Do-Datei ist
Das funktionierte genau so, wie wir es wollten.
Mit diesem Konzept kann man viel anfangen. Als letztes und noch komplexeres Beispiel gab derselbe Benutzer an, dass er die Option by() mit der Option saving() verwenden und diese mit einer anderen Variablen grafisch darstellen möchte, und er musste dies für eine Liste von Variablen tun. Das klingt zunächst verwirrend (und war es auch). Im Wesentlichen mussten wir
von var1: graph var2 var3 , Speichern(graph) von(var4)
Anstelle von var3 sollten mehrere verschiedene Variablen verwendet werden.
Die Lösung besteht darin, einen for-Befehl in einer while-Schleife zu verwenden. Hier ist ein Beispiel mit dem Auto-Datensatz:
Dies führt zu