1 elem került a kosárba.

Megjegyzés: Ez a GYIK a Stata 6 felhasználóinak szól. Ez nem releváns a legújabb verziók esetében.

Stata 6: Mit tegyek, ha a szükséges parancs nem használható a by-val?

Title Stata 6: while hurkok használata, ha a by parancs nem választható
szerző Jeremy B. Wernow, StataCorp

számos olyan parancs van a Stata-ban, amely nem engedélyezi a by parancsot opcióként. Két példa a tab1 parancs és a graph parancsok a saving () opcióval. Ennek a funkciónak az egyik módja az, ha a végrehajtani kívánt parancsot egy while hurokba helyezi:

Ez nem működik. Tudjuk azonban, hogy a rep78 értéke 1 és 5 között van, ezért próbáljunk ki egy while ciklust egy do-fájlban:

 local i = 1 while `i' <=5 { tab1 mpg price if rep78 == `i' local i = `i' + 1 }

itt van a fájl végrehajtásának kimenete:

mi van, ha a rep78-nak hiányzik az értéke? Ebben az esetben az egen paranccsal létrehozhat egy új változót, amely kategorizálja az egyes értékeket a rep78-ban.

itt van a módosított do-fájl:

 local i = 1 egen y = group(rep78), missing while `i' <=6 { tab1 mpg price if y == `i' local i = `i' + 1 }

a hiányzó opció használatával az egen paranccsal a rep78 hiányzó értékei 6 értékkel lesznek kódolva (emlékezve arra, hogy a rep78 értéke 1-5). Vegye figyelembe, hogy a do-fájl kimenete mostantól tartalmazza az mpg táblázatait, valamint a rep78 hiányzó értékeinek árát is.

most térjünk át egy nehezebb példára. A felhasználó a közelmúltban a graph paranccsal és a saving() opcióval akarta használni a by parancsot.

by nem használható a graph, saving() opcióval az elnevezési problémák miatt (hogyan nevezné el az egyes grafikonokat?). Ez megoldható egy másik do-fájllal:

 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 }

ennek a do-fájlnak a kimenete

ami úgy működött, ahogy szerettük volna.

sok mindent lehet tenni ezzel a koncepcióval. Végső és még összetettebb példaként ugyanaz a felhasználó azt is mondta, hogy a by() opciót a saving() opcióval szeretné használni, ábrázolva azokat egy másik változóval szemben, és ezt a változók listájához kellett elvégeznie. Ez elsőre talán zavarónak hangzik (és az is volt). Lényegében szükségünk volt

by var1: graph var2 var3, megtakarítás (graph) by(var4)

Több különböző változót kellett használni a var3 helyett.

a megoldás az, hogy a for parancsot egy while cikluson belül használjuk. Itt van egy példa az automatikus adatkészlet használatával:

ennek eredménye

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.