Potriviți fișierele de date fuzionate / modulele de învățare SPSS

Introducere

când aveți două fișiere de date, le puteți combina fuzionându-le una lângă alta, potrivind observațiile bazate pe un identificator. De exemplu, mai jos avem un fișier care conține tați și avem un fișier care conține faminc. Ne-ar dori să se potrivească merge fișierele împreună, astfel încât să avem observația dads pe aceeași linie cu observația faminc bazat pe famid variabilă cheie.

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 

după meci care fuzionează tații și faminc, datele ar arăta astfel.

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

unu-la-unu merge

să începem prin crearea fișierelor pe care le vom fuziona. Mai jos vom crea fișierele dads.sav și 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". 

rezultatul acestor declarații este prezentat mai jos, confirmând că am citit datele în mod corespunzător.

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

există trei pași pentru a se potrivi merge dads.sav cu faminc.sav. (Rețineți că aceasta este o îmbinare unu la unu, deoarece există o corespondență unu la unu între înregistrările dads și faminc.) Acești trei pași sunt ilustrați mai jos.

  1. utilizați cazuri de sortare pentru a sorta tati pe famid și salvați acel fișier (îl vom numi dads2.sav)
  2. utilizați cazuri de sortare pentru a sorta faminc pe famid și salvați acel fișier (îl vom numi faminc2.sav)
  3. utilizați fișiere de potrivire pentru a îmbina dads2.sav și faminc2.fișiere sav bazate pe famid

mai jos vom arăta comenzile pentru efectuarea îmbinării.

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.

rezultatul de mai jos arată că îmbinarea meciului a funcționat corect.

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

unu-la-mulți merge

exemplul următor consideră un unu la mai multe merge în cazul în care o observație într-un fișier poate avea mai multe înregistrări de potrivire într-un alt fișier. Imaginați-vă că am avut un fișier cu tați așa cum am văzut în exemplul anterior și am avut un fișier cu copii în care un tată ar putea avea mai mult de un copil. Vezi de ce acest lucru se numește unul la mai multe merge, deoarece se potrivesc o observație tata la una sau mai multe (mai multe) observații copii. Amintiți-vă că fișierul dads este fișierul cu o singură observație, iar fișierul kids este cel cu multe observații. Mai jos, vom crea fișierul de date pentru tați și pentru copii.

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".

după cum vedeți mai jos, pașii pentru a face o îmbinare unu la mulți sunt similari cu fuziunea unu la unu pe care am văzut-o mai sus.

  1. utilizați cazuri de sortare după pentru a sorta dads pe famid și salvați acel fișier (îl vom numi dads2)
  2. utilizați cazuri de sortare după pentru a sorta copiii pe famid și salvați acel fișier (îl vom numi kids2)
  3. utilizați fișiere de potrivire pentru a îmbina fișierele dads2 și kids2. Cu toate acestea, deoarece fișierul dads este fișierul cu o singură observație, utilizați /TABLE=”dads2.sav”, Nu /fișier= ” dads2.sav ” pentru a specifica fișierul dads.
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.

rezultatul de mai jos arată că această îmbinare a funcționat așa cum am sperat.

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

diferența cheie dintre o îmbinare unu la unu și o îmbinare unu la mulți este că trebuie să utilizați /TABLE=”dads2.sav „în loc de / FILE=” dads2.sav”. Pentru datele dvs., atunci când faceți o îmbinare unu la mulți, întrebați-vă ce fișier joacă rolul unuia (într-unul la mulți). Pentru acel fișier, utilizați / TABLE=în loc de /FILE=.

să facem intenționat o eroare și să folosim /FILE=”dads2.sav ” și să vedem ce face SPSS.

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

primul lucru pe care îl observăm este că SPSS ne dă avertismentul prezentat mai jos. Acest lucru ne spune că există mai mulți copii pentru un anumit tată.

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

după cum recomandă SPSS, vom inspecta cu atenție rezultatele. Într-adevăr, vedem că rezultatele nu sunt ceea ce ne-am dorit. Când au existat mai mulți copii pe tata, a fuzionat doar tata cu primul copil, și apoi următorii copii cu aceiași tați au fost atribuite valori lipsă pentru informațiile tați (nume și inc). Când am folosit / TABLE= Subcomandă în exemplul anterior, SPSS a purtat informațiile despre tați pe toți copiii.

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 .

ordonarea variabilelor din noul fișier

puteți utiliza subcomanda /MAP cu comanda Adăugare fișiere pentru a vedea ordinea variabilelor din noul fișier, așa cum este ilustrat mai jos. Dacă doriți să rearanjați ordinea variabilelor din noul fișier, puteți adăuga și subcomanda /KEEP la comanda Adăugare fișiere. Variabilele vor fi ordonate în noul fișier în ordinea în care le listați în subcomanda /KEEP. Dacă nu listați toate variabilele din subcomanda / KEEP, variabilele care nu sunt listate nu vor fi prezente în noul fișier. De asemenea, rețineți că puteți lista primele câteva variabile dacă acestea sunt singurele care trebuie reordonate și apoi utilizați cuvântul cheie Toate pentru a include restul variabilelor în noul fișier. Variabilele care nu sunt specificate în subcomanda /KEEP vor rămâne ordinea în care se află în fișierele originale.

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

după cum puteți vedea, variabilele din noul fișier sunt acum în numele comenzii, famid inc.

5.1 nepotrivire înregistrări în unu-la-unu merge

cele două fișiere de date au poate avea înregistrări care nu se potrivesc. Mai jos ilustrăm acest lucru prin includerea unui tată suplimentar (Karl în famid 4) care nu are o familie corespunzătoare și există două familii suplimentare (5 și 6) în fișierul familiei care nu au un tată corespunzător.

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.

după cum vedeți mai sus, folosim /IN=fromdad pentru a crea o variabilă 0/1 care indică dacă fișierul rezultat conține o înregistrare cu date din fișierul dads. De asemenea, folosim /IN=fromfam pentru a indica dacă fișierul rezultat are o înregistrare din fișierul faminc. Lista și crosstab-urile ne arată apoi despre înregistrările nepotrivite.

ieșirea din comanda Listă ne arată că atunci când au existat înregistrări nepotrivite. Pentru famid 4, valoarea fromdad este 1 și fromfam este 0, așa cum ne-am aștepta, deoarece au existat date de la tați pentru famid 4, dar nu există date de la faminc. De asemenea, așa cum ne așteptăm, această înregistrare are date valide pentru variabilele din fișierul dads (nume și inc) și date lipsă pentru variabilele din faminc (faminc96 faminc97 și faminc98). Vedem modelul invers pentru famid 5 și 6.

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

dacă ne uităm la variabilele fromdad și fromfam, putem vedea că există trei înregistrări care au date potrivite, una care are date doar de la tați și două înregistrări care au date doar din fișierul faminc. Tabelul încrucișat de mai jos ne arată aceleași rezultate și este o modalitate mai ușoară de a număra potrivirea decât de a număra manual potrivirea.

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

la potrivirea fișierelor, vă sugerăm să utilizați această strategie pentru a verifica potrivirea celor două fișiere. Dacă există înregistrări neașteptate nepotrivite, atunci ar trebui să investigați pentru a înțelege cauza înregistrărilor nepotrivite.

puteți utiliza selectați dacă pentru a elimina unele dintre înregistrările care nu se potrivesc. De exemplu, dacă doriți să păstrați doar înregistrările în care tații se potrivesc cu informațiile familiei, puteți tasta

SELECT IF fromdad AND fromfam.LIST.

rezultatele sunt prezentate mai jos, inclusiv doar cele trei înregistrări de potrivire.

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 înregistrări nepotrivite într-o îmbinare unu-la-mulți

SPSS gestionează includerea înregistrărilor nepotrivite într-o îmbinare unu-la-mulți diferit decât o îmbinare unu-la-unu. Amintiți-vă că într-o îmbinare unu-la-mulți, există un fișier care are o observație care se potrivește cu multe observații din celălalt fișier; să ne referim la acestea ca la un fișier și la mai multe fișiere. Dacă există observații în fișierul one care nu se potrivesc cu fișierul many, atunci aceste observații nu vor apărea deloc în fișierul îmbinat. Dacă există observații în fișierul multi care nu se potrivesc cu un fișier, acele înregistrări vor apărea în fișierul îmbinat. Dacă aceasta este ceea ce doriți, atunci puteți îmbina fișierele așa cum este ilustrat în secțiunea 3 și puteți utiliza /IN= așa cum este ilustrat în secțiunea anterioară pentru a urmări potrivirea. Cu toate acestea, dacă doriți ca înregistrările nepotrivite din fișierul unu și mulți să apară în fișierul îmbinat, atunci puteți utiliza strategia de potrivire prezentată mai jos.

mai jos folosim exemplul nostru pentru a îmbina tații cu copiii, iar în acest exemplu avem înregistrări nepotrivite în ambele fișiere. Mai jos potrivim fișierele pentru a include toate înregistrările nepotrivite în fișierul îmbinat. Părțile care sunt diferite sunt indicate în roșu.

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.

secțiunea în roșu adaugă un pas suplimentar la potrivire. Scopul acestui pas este de a adăuga orice valori ale famid care sunt doar în fișierul dads la fișierul kids. O face făcând o îmbinare unu-la-unu între dadid și copii și salvează acel fișier ca temp. Din moment ce dadid doar famid tuturor tatilor, această îmbinare adaugă practic observații pentru orice famid care este în fișierul dads, dar nu în fișierul kids, și salvează acest lucru ca temp. Apoi, putem fuziona apoi temp cu dads2 și temp va avea un famid pentru fiecare observație în fișierul dads2. Acest lucru asigură că fișierul rezultat va include toate observațiile din fișierul dads, chiar dacă acestea nu au o înregistrare de potrivire în fișierul kids. Rezultatul este prezentat mai jos. Într-adevăr, fișierul conține observația pentru tatăl Karl care nu are copii potriviți. Dacă am omis codul suplimentar în acest pas, acea înregistrare nu ar fi fost inclusă în acest fișier.

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 variabile cu același nume, dar informații diferite

mai jos avem fișierele cu informații despre tați și familie, dar priviți mai atent la numele variabilelor. În fișierul dads, există o variabilă numită inc98, iar în fișierul familial există variabile inc96, inc97 și inc98. Să mergem mai departe și să fuzionăm aceste fișiere și să vedem ce face 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.

rezultatele sunt prezentate mai jos. După cum vedeți, variabila inc98 are datele din fișierul dads, fișierul care a apărut pentru prima dată în comanda MATCH FILES. Când potriviți fișiere care au aceeași variabilă, SPSS va utiliza valorile din fișierul care apare mai devreme în comanda MATCH FILES.

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

există câteva modalități prin care puteți rezolva această problemă.

soluție #1. Cea mai evidentă soluție este să alegeți nume de variabile în fișierele originale care nu vor intra în conflict între ele. Cu toate acestea, este posibil să primiți fișiere în care numele au fost deja alese.

soluție #2. Puteți redenumi variabilele din comanda MATCH FILES (care redenumește variabilele înainte de a face potrivirea). Acest lucru vă permite să selectați nume de variabile care nu intră în conflict între ele, așa cum este ilustrat mai jos.

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.

după cum puteți vedea mai jos, variabilele au fost redenumite așa cum am specificat.

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 aceleași variabile cu informații din dicționar diferite

această problemă este similară cu cea prezentată mai sus. În acest exemplu, avem două variabile cu același nume și aceleași informații, dar cu informații din dicționar diferite asociate acestora. Aceste informații din dicționar ar putea include etichete de valoare și / sau etichete variabile. Ca și în exemplul de mai sus, SPSS va prelua informațiile din fișierul listat mai întâi în comanda MATCH FILES. Nu va fi emis niciun mesaj de eroare sau de avertizare pentru a vă informa că informațiile din variabila din fișierul ulterior au fost pierdute. Soluția la această problemă este să listați mai întâi în fișierele de potrivire comanda fișierului cu informațiile din dicționar pe care le doriți în fișierul rezultat.

5.5 ați rulat comanda Adăugare fișiere și nu s-a întâmplat nimic

dacă executați doar comanda Adăugare fișiere, așa cum se arată mai jos, SPSS nu va face nimic. Cu toate acestea, veți vedea o notă în colțul din dreapta jos al editorului de date care spune „transformare în așteptare”.

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

soluție: soluția este să adăugați fie comanda execute, fie o comandă de procedură care va forța executarea transformării, cum ar fi comanda list sau comanda crosstab.

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

Leave a Reply

Adresa ta de email nu va fi publicată.