Match összevonása adatfájlok / SPSS tanulási modulok

Bevezetés

ha két adatfájlok, akkor össze őket összevonásával őket egymás mellett, egyező fel megfigyelések alapján egy azonosítót. Például az alábbiakban van egy apákat tartalmazó fájl, a faminc pedig. Szeretnénk egyeztetni a fájlok egyesítését, így az apák megfigyelése ugyanazon a vonalon van a faminc megfigyeléssel, amely a famid kulcsváltozón alapul.

dads famid name inc 2 Art 22000 1 Bill 30000 3 Paul 25000 faminc famid faminc96 faminc97 faminc98 3 75000 76000 77000 1 40000 40500 41000 2 45000 45400 45800 

a meccs után az apák és a faminc összevonása után az adatok így néznének ki.

famid name inc faminc96 faminc97 faminc98 1 Bill 30000 40000 40500 41000 2 Art 22000 45000 45400 45800 3 Paul 25000 75000 76000 77000 

egy-egy egyesítés

kezdjük azzal, hogy létrehozzuk azokat a fájlokat, amelyeket egyesíteni fogunk. Az alábbiakban létrehozzuk a fájlokat apukák.sav és faminc.sav.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.LIST.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid faminc96 faminc97 faminc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 45800END DATA.LIST.SAVE OUTFILE = "faminc.sav". 

ezen állítások kimenete az alábbiakban látható, megerősítve, hogy megfelelően olvastuk az adatokat.

FAMID NAME INC 2.00 Art 22000.00 1.00 Bill 30000.00 3.00 Paul 25000.00FAMID FAMINC96 FAMINC97 FAMINC98 3.00 75000.00 76000.00 77000.00 1.00 40000.00 40500.00 41000.00 2.00 45000.00 45400.00 45800.00

három lépés van az egyesítő apukák egyeztetésére.sav a faminc.sav. (Megjegyzendő, hogy ez egy egy-egy egyesítés, mert van egy egy-egy levelezés között a dads és faminc records.) Ezt a három lépést az alábbiakban mutatjuk be.

  1. használja a rendezési eseteket a dads rendezéséhez a famid-on, és mentse el ezt a fájlt (dads2-nek hívjuk.sav)
  2. a rendezési esetek használatával rendezze a faminc-et a famid-on, és mentse el a fájlt (faminc2-nek hívjuk.sav)
  3. egyezési fájlok használata a dads2 egyesítéséhez.sav és faminc2.sav fájlok alapján famid

az alábbiakban bemutatjuk az egyesítés végrehajtására szolgáló parancsokat.

GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /FILE="faminc2.sav" /BY famid.LIST.

az alábbi kimenet azt mutatja, hogy a mérkőzés egyesítése megfelelően működött.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 1.00 Bill 30000.00 40000.00 40500.00 41000.00 2.00 Art 22000.00 45000.00 45400.00 45800.00 3.00 Paul 25000.00 75000.00 76000.00 77000.00

egy a sokhoz egyesítés

a következő példa egy a sokhoz egyesítést vesz figyelembe, ahol az egyik fájl egyik megfigyelésének több egyező rekordja lehet egy másik fájlban. Képzeljük el, hogy volt egy aktánk apákkal, ahogy az előző példában láttuk, és volt egy aktánk gyerekekkel, ahol egy apának több gyereke is lehetett. Látod, miért ez az úgynevezett egy a sok merge, mivel Ön megfelelő egy apa megfigyelés egy vagy több (sok) gyerekek megfigyelések. Ne feledje, hogy a dads fájl egy megfigyeléssel rendelkező fájl, a kids fájl pedig sok megfigyeléssel rendelkezik. Az alábbiakban elkészítjük az apák és a gyerekek adatfájlját.

DATA LIST LIST / famid * name (A4) inc .BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.LIST.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * kidname (A4) birth age wt * sex (A1).BEGIN DATA.1 Beth 1 9 60 f1 Bob 2 6 40 m1 Barb 3 3 20 f2 Andy 1 8 80 m2 Al 2 6 50 m2 Ann 3 2 20 f3 Pete 1 6 60 m3 Pam 2 4 40 f3 Phil 3 2 20 mEND DATA.LIST.SAVE OUTFILE="kids.sav".

amint az alább látható, az egy-sok egyesítés lépései hasonlóak a fent látott egy-egy egyesítéshez.

  1. használja az esetek rendezése lehetőséget az apák rendezéséhez a famid-on, és mentse el a fájlt (dads2-nek fogjuk hívni)
  2. használja az esetek rendezése lehetőséget a gyerekek rendezéséhez a famid-on, és mentse a fájlt (kids2-nek fogjuk hívni)
  3. egyező fájlok használata a dads2 és kids2 fájlok egyesítéséhez. Mivel azonban a dads fájl egy megfigyeléssel rendelkező Fájl, használja a /TABLE=”dads2.sav”, nem / FILE= ” dads2.sav ” a dads fájl megadásához.
GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="kids.sav".SORT CASES BY famid.SAVE OUTFILE="kids2.sav".MATCH FILES FILE="kids2.sav" /TABLE="dads2.sav" /BY famid.LIST.

az alábbi kimenet azt mutatja, hogy ez az egyesítés úgy működött, ahogy reméltük.

FAMID KIDNAME BIRTH AGE WT SEX NAME INC 1.00 Beth 1.00 9.00 60.00 f Bill 30000.00 1.00 Bob 2.00 6.00 40.00 m Bill 30000.00 1.00 Barb 3.00 3.00 20.00 f Bill 30000.00 2.00 Andy 1.00 8.00 80.00 m Art 22000.00 2.00 Al 2.00 6.00 50.00 m Art 22000.00 2.00 Ann 3.00 2.00 20.00 f Art 22000.00 3.00 Pete 1.00 6.00 60.00 m Paul 25000.00 3.00 Pam 2.00 4.00 40.00 f Paul 25000.00 3.00 Phil 3.00 2.00 20.00 m Paul 25000.00

a legfontosabb különbség az egy-egy egyesítés és az egy-sok egyesítés között az, hogy a /TABLE=”dads2-t kell használni.sav “helyett / FILE=” dads2.sav”. Az Ön adatai esetében, amikor egy a sokhoz egyesítést végez, kérdezze meg magától, hogy melyik fájl játssza az egyik szerepét (egy a sokhoz). Ehhez a fájlhoz használja a / TABLE= értéket a / FILE=helyett.

tegyünk szándékosan hibát és használjuk a /FILE=”dads2-t.sav”és nézze meg, mit csinál az SPSS.

MATCH FILES /FILE="kids2.sav" /FILE="dads2.sav" /BY famid.LIST.

az első dolog, amit észreveszünk, hogy az SPSS megadja nekünk az alább látható figyelmeztetést. Ez azt mondja nekünk, hogy több gyerek van egy adott apa számára.

Warning # 5132Duplicate key in a file. The BY variables do not uniquely identify eachcase on the indicated file. Please check the results carefully.

amint azt az SPSS tanácsolja, gondosan megvizsgáljuk az eredményeket. Valójában látjuk, hogy az eredmények nem azok, amire vágytunk. Amikor apánként több gyerek volt, csak az apát egyesítette az első gyerekkel, majd a következő, azonos apákkal rendelkező gyerekeknek hiányzó értékeket rendeltek az apák információihoz (név és inc). Amikor az előző példában a /TABLE= alparancsot használtuk, az SPSS az összes gyereknél hordozta az apák adatait.

FAMID KIDNAME BIRTH AGE WT SEX NAME INC 1.00 Beth 1.00 9.00 60.00 f Bill 30000.00 1.00 Bob 2.00 6.00 40.00 m . 1.00 Barb 3.00 3.00 20.00 f . 2.00 Andy 1.00 8.00 80.00 m Art 22000.00 2.00 Al 2.00 6.00 50.00 m . 2.00 Ann 3.00 2.00 20.00 f . 3.00 Pete 1.00 6.00 60.00 m Paul 25000.00 3.00 Pam 2.00 4.00 40.00 f . 3.00 Phil 3.00 2.00 20.00 m .

a változók rendezése az új fájlban

a / MAP alparancsot a fájlok hozzáadása paranccsal használhatja az új fájl változóinak sorrendjének megtekintéséhez,az alábbiak szerint. Ha át szeretné rendezni a változók sorrendjét az új fájlban, akkor a /KEEP alparancsot is hozzáadhatja a fájlok hozzáadása parancshoz. A változók az új fájlban abban a sorrendben lesznek rendezve, ahogyan a /KEEP alparancson felsorolja őket. Ha nem sorolja fel az összes változót a /KEEP alparancson, akkor a fel nem sorolt változók nem lesznek jelen az új fájlban. Vegye figyelembe azt is, hogy felsorolhatja az első néhány változót, ha csak ezeket kell átrendezni, majd az ALL kulcsszóval használhatja a többi változót az új fájlba. A /KEEP alparancson nem megadott változók az eredeti fájlok sorrendjében maradnak.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.1 Bess 150003 Pat 500002 Amy 18000END DATA.SAVE OUTFILE = "moms.sav".
ADD FILES FILE="dads.sav" /FILE="moms.sav" /KEEP = name ALL /MAP.EXECUTE.
Map of the result fileResult Input1 Input2
------ ------ ------
NAME NAME NAME
FAMID FAMID FAMID
INC INC INC

mint látható, az új fájl változói most a famid inc.sorrendben vannak.

5.1 rekordok eltérése egy-egy összevonásban

a két adatfájlnak lehetnek olyan rekordjai, amelyek nem egyeznek. Az alábbiakban ezt szemléltetjük egy extra apával (Karl a famid 4 – ben), akinek nincs megfelelő családja, és van két extra család (5 és 6) a családi aktában, amelyeknek nincs megfelelő apjuk.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 250004 Karl 95000END DATA.SORT CASES BY famid.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid faminc96 faminc97 faminc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 458005 55000 65000 700006 22000 24000 28000END DATA.SORT CASES BY famid.SAVE OUTFILE = "faminc.sav".MATCH FILES FILE="dads.sav" /IN=fromdad /FILE="faminc.sav" /IN=fromfam /BY famid.LIST.CROSSTABS /TABLES= fromdad BY fromfam.

mint fentebb látható ,a / in = fromdad segítségével 0/1 változót hozunk létre, amely jelzi, hogy a kapott fájl tartalmaz-e rekordot a dads fájl adataival. Hasonlóképpen használjuk /in=fromfam annak jelzésére, hogy a kapott fájlnak van-e rekordja a faminc fájlból. A lista és a kereszttáblák megmutatják az eltéréseket.

a LIST parancs kimenete azt mutatja, hogy amikor nem voltak megfelelő rekordok. A famid 4 esetében a fromdad értéke 1, A fromfam értéke pedig 0, ahogy azt várnánk, mivel a famid 4 apáitól voltak adatok, de a faminc-től nem. Továbbá, ahogy vártuk, ez a rekord érvényes adatokat tartalmaz a dads fájl változóira (név és inc), és hiányzó adatokat a faminc változóira (faminc96 faminc97 és faminc98). Látjuk az 5.és 6. család fordított mintáját.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 FROMDAD FROMFAM 1.00 Bill 30000.00 40000.00 40500.00 41000.00 1 1 2.00 Art 22000.00 45000.00 45400.00 45800.00 1 1 3.00 Paul 25000.00 75000.00 76000.00 77000.00 1 1 4.00 Karl 95000.00 . . . 1 0 5.00 . 55000.00 65000.00 70000.00 0 1 6.00 . 22000.00 24000.00 28000.00 0 1

ha megnézzük a fromdad és fromfam változókat, láthatjuk, hogy három rekord van, amelyek egyező adatokkal rendelkeznek, az egyik csak a dads adataival rendelkezik, és két rekord, amelyek csak a faminc fájl adatait tartalmazzák. Az alábbi kereszttábla ugyanazokat az eredményeket mutatja, és egyszerűbb módja az egyezés kiszámításának, mint a kézi egyezés.

FROMDAD by FROMFAM FROMFAM Page 1 of 1 Count | | | Row | 0| 1| TotalFROMDAD --------+------+------+ 0 | | 2| 2 | | | 33.3 +------+------+ 1 | 1| 3| 4 | | | 66.7 +------+------+ Column 1 5 6 Total 16.7 83.3 100.0

a fájlok egyeztetésekor azt javasoljuk, hogy használja ezt a stratégiát a két fájl egyezésének ellenőrzésére. Ha váratlan, nem egyező rekordok vannak, akkor meg kell vizsgálnia, hogy megértse a nem egyező rekordok okát.

a select IF (kijelölés) paranccsal törölhet néhány nem egyező rekordot. Például, ha csak azokat a nyilvántartásokat akarta megőrizni, ahol az apukák egyeztek a családi információkkal, beírhatnád

SELECT IF fromdad AND fromfam.LIST.

az eredmények az alábbiakban láthatók, csak a három egyező rekordot tartalmazza.

FAMID NAME INC FAMINC96 FAMINC97 FAMINC98 FROMDAD FROMFAM 1.00 Bill 30000.00 40000.00 40500.00 41000.00 1 1 2.00 Art 22000.00 45000.00 45400.00 45800.00 1 1 3.00 Paul 25000.00 75000.00 76000.00 77000.00 1 1

5.2 nem egyező rekordok egy a sokhoz egyesítésben

az SPSS a nem egyező rekordok egy a sokhoz egyesítésbe történő felvételét másképp kezeli, mint az egy az egyhez egyesítést. Ne feledje, hogy egy-a-sokhoz egyesítés esetén van egy fájl, amelynek egy megfigyelése megegyezik a másik fájl sok megfigyelésével; nevezzük ezeket az egy fájlnak és a sok fájlnak. Ha az egy fájlban vannak olyan megfigyelések, amelyek nem egyeznek a sok fájllal, akkor ezek a megfigyelések egyáltalán nem jelennek meg az egyesített fájlban. Ha a sok fájlban vannak olyan megfigyelések, amelyek nem egyeznek az egy fájllal, akkor ezek a rekordok megjelennek az egyesített fájlban. Ha ez az, amire vágyik, akkor egyesítheti a fájlokat a 3.szakaszban bemutatott módon, és az előző szakaszban bemutatott /in= használatával követheti nyomon az egyezést. Ha azonban azt szeretné, hogy az egy és több fájl nem egyező rekordjai megjelenjenek az egyesített fájlban, akkor használhatja az alábbiakban ismertetett egyeztetési stratégiát.

az alábbiakban a példánkat használjuk az apák és a gyerekek egyesítésére, ebben a példában pedig mindkét fájlban nem megfelelő rekordok vannak. Az alábbiakban egyeztetjük a fájlokat, hogy az összes nem egyező rekordot tartalmazza az egyesített fájlban. A különböző részek piros színnel vannak jelölve.

DATA LIST LIST / famid * name (A4) inc.BEGIN DATA.2 Art 220001 Bill 300003 Paul 250004 Karl 95000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid * kidname (A4) birth age wt * sex (A1).BEGIN DATA.1 Beth 1 9 60 f1 Bob 2 6 40 m1 Barb 3 3 20 f2 Andy 1 8 80 m2 Al 2 6 50 m2 Ann 3 2 20 f3 Pete 1 6 60 m3 Pam 2 4 40 f3 Phil 3 2 20 m5 Ted 1 4 35 m5 Tess 2 2 18 fEND DATA.SAVE OUTFILE="kids.sav".GET FILE="kids.sav".SORT CASES BY famid.SAVE OUTFILE="kids2.sav".GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".SAVE OUTFILE="dadid.sav" /KEEP=famid.MATCH FILES FILE="kids2.sav" /IN=inkid /FILE="dadid.sav" /BY famid .LIST.SAVE OUTFILE="temp.sav".MATCH FILES FILE="temp.sav" /TABLE="dads2.sav" /IN=dads /BY famid.LIST.

a piros rész egy további lépést ad az illesztéshez. Ennek a lépésnek az a célja, hogy a famid minden olyan értékét hozzáadja a kids fájlhoz, amely csak a dads fájlban található. Ez csinál egy egy-egy merge között dadid és a gyerekek, és menti, hogy a fájl temp. Mivel a dadid csak az összes apa családja, ez az egyesítés alapvetően megfigyeléseket ad minden olyan famid-hez, amely a dads fájlban van, de nem a kids fájlban, és ezt temp-ként menti. Ezután egyesíthetjük a temp-t a dads2-vel, és a temp-nek lesz egy famidja a dads2 fájl minden megfigyeléséhez. Ez biztosítja, hogy a kapott fájl tartalmazza az dads fájl összes megfigyelését, még akkor is, ha nincs megfelelő rekord a kids fájlban. Az eredmény az alábbiakban látható. Valóban, a fájl tartalmazza a megfigyelés az apa Karl, aki nem rendelkezik megfelelő gyerekek. Ha ebben a lépésben elhagytuk az extra kódot, akkor ez a rekord nem került volna bele ebbe a fájlba.

FAMID KIDNAME BIRTH AGE WT SEX INKID NAME INC DADS 1.00 Beth 1.00 9.00 60.00 f 1 Bill 30000.00 1 1.00 Bob 2.00 6.00 40.00 m 1 Bill 30000.00 1 1.00 Barb 3.00 3.00 20.00 f 1 Bill 30000.00 1 2.00 Andy 1.00 8.00 80.00 m 1 Art 22000.00 1 2.00 Al 2.00 6.00 50.00 m 1 Art 22000.00 1 2.00 Ann 3.00 2.00 20.00 f 1 Art 22000.00 1 3.00 Pete 1.00 6.00 60.00 m 1 Paul 25000.00 1 3.00 Pam 2.00 4.00 40.00 f 1 Paul 25000.00 1 3.00 Phil 3.00 2.00 20.00 m 1 Paul 25000.00 1 4.00 . . . 0 Karl 95000.00 1 5.00 Ted 1.00 4.00 35.00 m 1 . 0 5.00 Tess 2.00 2.00 18.00 f 1 . 0

5.3 változó azonos névvel, de különböző információkkal

az alábbiakban az apák és a család adatait tartalmazó fájlok találhatók, de közelebbről megvizsgáljuk a változók nevét. A dads fájlban van egy inc98 nevű változó, a családfájlban pedig az inc96, inc97 és inc98 változók találhatók. Folytassuk, egyesítsük ezeket a fájlokat, és nézzük meg, mit csinál az SPSS.

DATA LIST LIST / famid * name (A4) inc98.BEGIN DATA.2 Art 220001 Bill 300003 Paul 25000END DATA.SAVE OUTFILE = "dads.sav".DATA LIST LIST / famid inc96 inc97 inc98.BEGIN DATA.3 75000 76000 770001 40000 40500 410002 45000 45400 45800END DATA.SAVE OUTFILE = "faminc.sav".GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /FILE="faminc2.sav" /BY famid.LIST.

az eredményeket az alábbiakban mutatjuk be. Amint látja, az inc98 változó a dads fájl adatait tartalmazza, amely Fájl először jelent meg a MATCH FILES parancsban. Ha ugyanazzal a változóval rendelkező fájlokat egyeztet, az SPSS a fájlok egyeztetése parancsban legkorábban megjelenő fájl értékeit fogja használni.

FAMID NAME INC98 INC96 INC97 1.00 Bill 30000.00 40000.00 40500.00 2.00 Art 22000.00 45000.00 45400.00 3.00 Paul 25000.00 75000.00 76000.00

van néhány módja annak, hogy megoldja ezt a problémát.

1.megoldás. A legkézenfekvőbb megoldás az eredeti fájlokban olyan változónevek kiválasztása, amelyek nem ütköznek egymással. Előfordulhat azonban, hogy olyan fájlokat kap, ahol a neveket már kiválasztották.

2.megoldás. A változókat átnevezheti a fájlok egyeztetése parancsban (amely átnevezi a változókat az illesztés elvégzése előtt). Ez lehetővé teszi olyan változónevek kiválasztását, amelyek nem ütköznek egymással, az alábbiak szerint.

GET FILE="dads.sav".SORT CASES BY famid.SAVE OUTFILE="dads2.sav".GET FILE="faminc.sav".SORT CASES BY famid.SAVE OUTFILE="faminc2.sav".MATCH FILES FILE="dads2.sav" /RENAME=(inc98 = dadinc98) /FILE="faminc2.sav" /RENAME=(inc96 inc97 inc98 = faminc96 faminc97 faminc98) /BY famid.LIST.

amint az alább látható, a változókat átneveztük, ahogy megadtuk.

FAMID NAME DADINC98 FAMINC96 FAMINC97 FAMINC98 1.00 Bill 30000.00 40000.00 40500.00 41000.00 2.00 Art 22000.00 45000.00 45400.00 45800.00 3.00 Paul 25000.00 75000.00 76000.00 77000.00

5.4 ugyanazok a változók különböző szótári információkkal

ez a probléma hasonló a fent vázolthoz. Ebben a példában két változó van ugyanazzal a névvel és ugyanazzal az információval, de különböző szótári információkkal társítva. Ez a szótári információ tartalmazhat értékcímkéket és / vagy változó címkéket. A fenti példához hasonlóan az SPSS az információkat a fájlok egyeztetése parancsban először felsorolt fájlból veszi át. Nem jelenik meg hiba vagy figyelmeztető üzenet, amely tudatja Önnel, hogy a későbbi fájl változójának adatai elveszettek. A probléma megoldása az, ha először felsorolja a fájlok egyeztetése parancsban a fájlt a kapott fájlban kívánt szótárinformációkkal.

5.5 futtatta a fájlok hozzáadása parancsot, és semmi sem történt

ha csak a fájlok hozzáadása parancsot futtatja, az alábbiak szerint, az SPSS nem fog semmit tenni. Az adatszerkesztő jobb alsó sarkában azonban megjelenik egy megjegyzés: “átalakítás függőben”.

ADD FILES FILE="dads.sav" /FILE="moms.sav"

megoldás: a megoldás az execute parancs vagy az eljárás parancs hozzáadása, amely kényszeríti az átalakítás végrehajtását, például a list parancsot vagy a crosstab parancsot.

ADD FILES FILE="dads.sav" /FILE="moms.sav"execute.

Leave a Reply

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