Stata 6: Mitä teen, jos tarvitsemaani komentoa ei voi käyttää?
Title | Stata 6: käytetään vaikka silmukoita, kun by-komento ei ole vaihtoehto | |
Author | Jeremy B. Wernow, StataCorp |
Statassa on useita komentoja, jotka eivät salli by-komentoa vaihtoehtona. Kaksi esimerkkiä ovat tab1-komento ja graafikomennot, joissa on tallennusvaihtoehto (). Yksi tapa kiertää tämä ominaisuus on laittaa suoritettava komento while-silmukkaan:
, joka ei toimi. Tiedämme kuitenkin, että rep78: n arvot ovat välillä 1-5, joten kokeillaanpa tovin loop do-tiedostossa:
local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }
tässä on tuloste tämän tiedoston suorittamisesta:
Mitä jos rep78: lla on puuttuvat arvot? Tässä tapauksessa voit käyttää egen-komentoa luodaksesi uuden muuttujan, joka luokittelee jokaisen arvon rep78: aan.
tässä on muokattu do-tiedosto:
local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }
käyttämällä puuttuvaa vaihtoehtoa egen-komennolla rep78: n puuttuvat arvot koodataan arvolla 6 (muistaen, että rep78: n arvot ovat 1-5). Huomaa, että tämän do-tiedoston tuloste sisältää nyt taulukoita mpg: lle ja hinta rep78: n puuttuville arvoille.
siirrytään nyt vaikeampaan esimerkkiin. Käyttäjä halusi äskettäin käyttää by-komentoa graafikomennolla ja tallennusvaihtoehdolla ().
by: ää ei voi käyttää graafin kanssa, tallentaminen () – valitsinta nimeämisongelmien vuoksi (miten nimeäisit jokaisen yksittäisen graafin?). Tämä voidaan ratkaista toisella do-tiedostolla:
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 }
tämän do-tiedoston ulostulo on
, joka toimi juuri niin kuin halusimme.
tällä konseptilla voi tehdä paljon. Lopullisena ja vielä monimutkaisempana esimerkkinä sama käyttäjä sanoi myös haluavansa käyttää by () – vaihtoehtoa säästövaihtoehdolla (), kuvaamalla ne toista muuttujaa vastaan, ja hän tarvitsi tämän tehtävän muuttujaluetteloa varten. Tämä luultavasti kuulostaa hämmentävältä aluksi (ja se olikin). Oleellisesti tarvittiin
var1: kuvaaja var2 var3, säästö(kuvaaja) by(var4)
useita eri muuttujia var3: n sijasta.
ratkaisu on käyttää komentoa while-silmukan sisällä. Tässä on esimerkki automaattista aineistoa käyttäen:
Tämä johtaa