Újdonságok a -ban

Alias változók a keretek között

Kiemelt információk

  • Könnyű, csak olvasható hozzáférés a kapcsolt keretekben lévő változókhoz

  • Memóriamegtakarítás ismétlődő értékek esetén hatalmas adathalmazokban

A Stata több adatkészletet támogat a memóriában; minden adatkészlet egy keretben található. A Stata 18-ban már úgy dolgozhat különböző keretek változóival, mintha azok egy keretben léteznének.

Ha az adatkészletek kapcsolatban állnak egymással, összekapcsolhatja a kereteiket az frlink parancs segítségével, hogy azonosítsa azokat a változókat, amelyek az aktuális keretben lévő megfigyeléseknek megfelelnek a kapcsolódó keretben lévő megfigyelésekkel.

Az új fralias add paranccsal létrehozott alias változók hivatkozásokat definiálnak a kapcsolt keretekben lévő változókra. Ezek a változók nagyon kevés memóriát foglalnak, mivel a megfigyelések valójában egy másik keretben vannak tárolva.

A Stata az aliasváltozókat úgy kezeli, mint az adatállomány bármely más változóját, azzal a kivétellel, hogy nem változtathatja meg az értékeiket. Ha egy adott aliasváltozó esetében megváltoztatja a megfelelő változó értékeit a kapcsolódó keretben, a megváltozott értékek automatikusan rendelkezésre állnak, amikor legközelebb használja az aliasváltozót.

Lássuk, hogyan működik

Két fájlunk van, a persons.dta és a txcounty.dta, amelyek kapcsolatban állnak egymással. A persons.dta a Texasban élő egyének adatait tartalmazza, a txcounty.dta pedig a texasi megyék adatait. A countyid változó mindkét adatkészletben azonosítja a texasi megyéket.

A következőkben az adatkészleteket külön keretbe töltjük be – a személyadatokat a jelenlegi keretbe, a Texas megyei adatokat pedig egy új, txcounty nevű keretbe.

Ez a két keret egy-egy countyid nevű változót tartalmaz, amely Texas megyéit azonosítja. Feltételezzük, hogy egy adott texasi megye kódolt értéke azonos a két keretben.

Az frlink-et használjuk a countyid változóval, hogy összekapcsoljuk az aktuális keretben lévő megfigyeléseket a txcounty keretben lévő megfigyelésekkel.

. frlink m:1 countyid, frame(txcounty)
  (all observations in frame default matched)

Az frlink egy új változót hoz létre, amely az aktuális keretben lévő megfigyeléseket a linkelt keretben lévő megfigyelésekhez rendeli hozzá. Ebben a példában az új változó neve a linkelt keret txcounty, de a generate() opció használatával más nevet is megadhat.

Az alias változókat egyesével vagy csoportosan is létrehozhatjuk. Úgy döntünk, hogy a *-ot használjuk, amely egy gyakori rövidítés, amely egy vagy több karakterrel egyezik meg a változónevekben, hogy létrehozzunk egy alias változót a kapcsolódó keret minden egyes változójához. A linkelt keretben csak egy változó van (a countyid kivételével), így az aktuális keretben egy új aliasváltozót kapunk.

.fralias add *, from(txcounty)
  (variable not aliased from linked frame: countyid)
  (1 variable aliased from linked frame)

Beírjuk a fralias describe parancsot, hogy megnézzük az aktuális keretben lévő összes alias változó leírását.

A fralias describe megtalálta az új alias változót, és azt jelenti, hogy a neve median_income; a célváltozó egy szinténmedian_income nevű float változó, amely a txcounty nevű keretben található, és a txcounty változóval kapcsolódik az aktuális kerethez.

Emlékezzünk vissza a fenti describe hívásokból, hogy az aktuális keret 20 megfigyelést tartalmaz, a txcounty összekapcsolt keret pedig nyolc megfigyelést. A median_income alias változó memóriaterülete két változójellemzőből áll, amelyek a linkváltozó nevének és a célváltozó nevének tárolására szolgálnak a linkelt keretben. Ha ahelyett, hogy aliasnevet hoznánk létre a median_income-hoz, a frget-et használnánk a median_income másolatának létrehozására az aktuális keretben, akkor az új float változó memóriaterülete négy bájt lenne az aktuális keret minden egyes megfigyeléséhez. Egy új double változó esetében ez nyolc bájt minden megfigyeléshez. A fralias add által létrehozott alias változóknak a frget által létrehozott változókhoz képest kicsi a fix memóriaterülete.

Most már használhatjuk a median_income alias változót, mint bármely más változót, feltéve, hogy nem próbáljuk megváltoztatni az értékeit. Foglaljuk össze az értékeit.

Tegyük fel, hogy meg kell változtatnunk a median_income néhány értékét. A txcounty keretben módosítjuk a median_income értékeit. Ezek a változások automatikusan elérhetőek az aktuális keretben lévő alias változó számára.