Stata 6: co zrobić, jeśli polecenie, którego potrzebuję,nie może być użyte Z by?
Tytuł | Stata 6: używanie pętli while, gdy polecenie by nie jest opcją | |
Autor | Jeremy B. Wernow, StataCorp |
istnieje kilka poleceń w Stata, które nie zezwalają na polecenie by jako opcję. Dwa przykłady to polecenie tab1 oraz polecenie graph z opcją saving (). Jednym ze sposobów obejścia tej funkcji jest umieszczenie polecenia, które chcesz wykonać w pętli while:
, które nie działa. Wiemy jednak, że rep78 ma wartości od 1 do 5, więc spróbujmy wykonać pętlę while w pliku do:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
oto wyjście z wykonania tego pliku:
Co jeśli rep78 ma brakujące wartości? W takim przypadku można użyć polecenia egen do utworzenia nowej zmiennej, która kategoryzuje każdą wartość w rep78.
oto zmodyfikowany plik do:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
używając brakującej opcji z poleceniem egen, brakujące wartości rep78 zostaną zakodowane z wartością 6 (pamiętając, że rep78 ma wartości od 1 do 5). Zauważ, że wyjście z tego pliku do będzie teraz zawierać tabele dla mpg i cena dla brakujących wartości rep78, jak również.
przejdźmy teraz do trudniejszego przykładu. Ostatnio użytkownik chciał użyć polecenia by z poleceniem graph i opcją saving ().
by nie może być używany z opcją graph, saving() z powodu problemów z nazewnictwem (jak nazwiesz każdy pojedynczy Wykres?). Można to rozwiązać za pomocą innego pliku do:
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 }
wyjście tego pliku do to
, który działał tak, jak chcieliśmy.
z tą koncepcją można wiele zrobić. Jako ostateczny i jeszcze bardziej złożony przykład, ten sam użytkownik powiedział również, że chce użyć opcji by () z opcją saving (), rysując je na tle innej zmiennej, i potrzebował tego zrobić dla listy zmiennych. To prawdopodobnie brzmi myląco na początku (i tak było). Zasadniczo, musieliśmy
przez var1: graph var2 var3, zapisując(graph) przez (var4)
kilka różnych zmiennych miało być użyte zamiast var3.
rozwiązaniem jest użycie polecenia for wewnątrz pętli while. Oto przykład przy użyciu automatycznego zestawu danych:
to powoduje