Stata 6: Vad gör jag om kommandot som jag behöver inte kan användas med av?
Title | Stata 6: använda medan slingor när kommandot by inte är ett alternativ | författare | Jeremy B. Wernow, StataCorp |
det finns flera kommandon i Stata som inte tillåter kommandot by som ett alternativ. Två exempel är kommandot tab1 och grafkommandon med alternativet Spara (). Ett sätt att komma runt den här funktionen är att sätta kommandot du vill köra i en While loop:
som inte fungerar. Vi vet dock att rep78 har värden mellan 1 och 5, så låt oss försöka en While loop i en DO-fil:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
Här är utmatningen från att köra den här filen:
vad händer om rep78 saknar värden? I det här fallet kan du använda egen-kommandot för att skapa en ny variabel som kategoriserar varje värde i rep78.
här är den modifierade do-filen:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
genom att använda det saknade alternativet med egen-kommandot kodas de saknade värdena för rep78 med ett värde på 6 (Kom ihåg att rep78 har värden på 1 till 5). Observera att utmatningen från denna do-fil nu innehåller tabeller för mpg och pris för de saknade värdena för rep78 också.
låt oss nu gå vidare till ett svårare exempel. En användare ville nyligen använda kommandot by med kommandot graph och alternativet Spara ().
by Kan inte användas med grafen, spara() alternativet på grund av namnproblem (hur skulle du namnge varje enskild graf?). Detta kan lösas med en annan do-fil:
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 }
utmatningen av denna do-fil är
som fungerade precis som vi ville.
det finns mycket du kan göra med detta koncept. Som ett sista och ännu mer komplext exempel sa samma användare också att han ville använda alternativet by() med alternativet saving (), grafera dem mot en annan variabel, och han behövde detta gjort för en lista med variabler. Detta låter förmodligen förvirrande först (och det var). I huvudsak behövde vi
med var1: graf var2 var3, spara(graf) med(var4)
flera olika variabler skulle användas i stället för var3.
lösningen är att använda ett för Kommando inuti en While loop. Här är ett exempel med hjälp av auto dataset:
detta resulterar i