Stata 6: Ce fac dacă comanda de care am nevoie nu poate fi utilizată cu by?
Title | Stata 6: folosind while loops când comanda by nu este o opțiune | |
autor | Jeremy B. Wernow, StataCorp |
există mai multe comenzi în Stata care nu vor permite comanda by ca opțiune. Două exemple sunt comanda tab1 și comenzile graph cu opțiunea saving (). O modalitate de a ocoli această caracteristică este de a pune comanda pe care doriți să o executați într-o buclă while:
care nu funcționează. Știm, totuși, că rep78 are valori între 1 și 5, deci să încercăm o buclă while într-un fișier do:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
Iată ieșirea din executarea acestui fișier:
Ce se întâmplă dacă rep78 are valori lipsă? În acest caz, puteți utiliza comanda egen pentru a crea o nouă variabilă care clasifică fiecare valoare în rep78.
iată fișierul do modificat:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
folosind opțiunea lipsă cu comanda egen, valorile lipsă ale rep78 vor fi codificate cu o valoare de 6 (amintindu-ne că rep78 are valori de la 1 la 5). Rețineți că ieșirea din acest fișier do va conține acum tabele pentru mpg și preț și pentru valorile lipsă ale rep78.
să trecem acum la un exemplu mai dificil. Un utilizator a dorit recent să utilizeze comanda by cu comanda graph și opțiunea saving ().
by nu poate fi utilizat cu opțiunea graph, saving() din cauza problemelor de denumire (cum ați numi fiecare grafic individual?). Acest lucru poate fi rezolvat cu un alt fișier 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 }
ieșirea acestui fișier do este
care a funcționat exact așa cum ne-am dorit.
există multe lucruri pe care le puteți face cu acest concept. Ca exemplu final și chiar mai complex, același utilizator a mai spus că dorește să folosească opțiunea by() cu opțiunea saving (), graficându-le pe cele împotriva unei alte variabile și avea nevoie de acest lucru pentru o listă de variabile. Acest lucru pare probabil confuz la început (și a fost). În esență, trebuia să
prin var1: grafic var2 var3, salvând(grafic) prin(var4)
Mai multe variabile diferite urmau să fie utilizate în locul var3.
soluția este de a utiliza o comandă for În interiorul unei bucle while. Aici este un exemplu folosind setul de date auto:
Acest lucru duce la