Täsmää yhdistettävät datatiedostot / SPSS-Oppimoduulit
Johdanto
kun sinulla on kaksi datatiedostoa, voit yhdistää ne yhdistämällä ne vierekkäin ja sovittamalla havainnot tunnisteen perusteella. Esimerkiksi alla on tiedosto, joka sisältää isät ja meillä on tiedosto, joka sisältää faminc. Haluamme yhdistää tiedostot yhteen, joten meillä on dads-havainto samalla linjalla faminc-havainnon kanssa, joka perustuu avainmuuttujaan famid.
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
kun match yhdistää dads ja faminc, tiedot näyttäisivät tältä.
famid name inc faminc96 faminc97 faminc98 1 Bill 30000 40000 40500 41000 2 Art 22000 45000 45400 45800 3 Paul 25000 75000 76000 77000
kahdenkeskinen yhdistäminen
aloitetaan luomalla yhdistettävät tiedostot. Alla luomme tiedostot isät.sav ja 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".
näiden lausuntojen tulokset on esitetty alla vahvistaen, että olemme lukeneet tiedot oikein.
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
on kolme vaihetta vastaamaan yhdistää isät.sav ja faminc.sav. (Huomaa, että tämä on yksi yhteen yhdistää, koska on yksi yhteen kirjeenvaihto dads ja faminc records.) Nämä kolme vaihetta on kuvattu alla.
- käytä lajittelu tapauksia lajitella isät famid ja tallentaa, että tiedosto (kutsumme sitä dads2.sav)
- käytä LAJITTELUTAPAUKSIA famincin lajitteluun famidissa ja tallenna tiedosto (kutsumme sitä nimellä faminc2.sav)
- käytä MATCH-tiedostoja yhdistääksesi dads2.sav ja faminc2.sav-tiedostot perustuvat famidiin
alla näytetään yhdistämisen suorittamiskomennot.
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.
alla oleva tuloste osoittaa, että ottelun yhdistäminen toimi oikein.
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
One-to-many merge
seuraavassa esimerkissä tarkastellaan yhtä moneen yhdistämistä, jossa yhdellä havainnolla yhdessä tiedostossa voi olla useita vastaavia tietueita toisessa tiedostossa. Kuvittele, että meillä oli tiedosto isät kuten näimme edellisessä esimerkissä, ja meillä oli tiedosto lasten kanssa, jossa isä voisi olla enemmän kuin yksi lapsi. Näet, miksi tätä kutsutaan yksi monista yhdistää, koska olet matching yksi isä havainto yhden tai useamman (monta) lapset havaintoja. Muista, että dads-tiedosto on tiedosto, jossa on yksi havainto, ja kids-tiedosto on se, jossa on monia havaintoja. Alla, luomme tiedoston isät ja lapset.
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".
kuten näette alla, vaiheet tehdä yksi moneen yhdistää on samanlainen kuin yksi yhteen yhdistää, että näimme edellä.
- käytä LAJITTELUTAPAUKSIA famid-tiedostojen lajitteluun ja tallenna tiedosto (kutsumme sitä dads2)
- käytä LAJITTELUTAPAUKSIA famid-tiedostojen lajitteluun ja tallenna tiedosto (kutsumme sitä kids2)
- käytä MATCH-tiedostoja dads2-ja kids2-tiedostojen yhdistämiseen. Koska dads-tiedosto on kuitenkin tiedosto, jossa on yksi havainto, käytä /TABLE=”dads2.sav”, not /FILE= ” dats2.sav” määrittää dads-tiedoston.
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.
alla oleva tuloste osoittaa, että yhdistyminen toimi toivotulla tavalla.
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
yksi yhteen-yhdistämisen ja yksi moneen-yhdistämisen keskeinen ero on, että sinun on käytettävä /TABLE=”DADS2.sav ”sijasta /FILE=” dats2.sav”. Tietosi, kun teet yksi moneen yhdistää, kysy itseltäsi, mikä tiedosto on rooli yksi (yksi moneen). Käytä /TABLE= sijasta /FILE=.
tehdään tarkoituksella virhe ja käytetään /FILE= ” dads2.sav ” ja katso, mitä SPSS tekee.
MATCH FILES /FILE="kids2.sav" /FILE="dads2.sav" /BY famid.LIST.
ensimmäinen asia, jonka huomaamme, on, että SPSS antaa meille varoituksen alla. Tämä kertoo meille, että on olemassa useita lapsia tietyn isän.
Warning # 5132Duplicate key in a file. The BY variables do not uniquely identify eachcase on the indicated file. Please check the results carefully.
kuten SPSS neuvoo, tarkastamme tulokset huolellisesti. Näemme, että tulokset eivät ole sitä, mitä halusimme. Kun oli useita lapsia per isä, se vain yhdisti isän ensimmäisen lapsen kanssa, ja sitten seuraavat lapset, joilla oli samat isät, määritettiin puuttuvat arvot dads-tiedoille (nimi ja inc). Kun käytimme /TABLE= alikomentoa edellisessä esimerkissä, SPSS kantoi isien tiedot kaikkiin lapsiin.
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 .
tilaamalla muuttujat uudessa tiedostossa
voit käyttää / MAP-alikomentoa ADD FILES-komennolla nähdäksesi muuttujan järjestyksen uudessa tiedostossa, kuten alla on esitetty. Jos haluat järjestää uuden tiedoston muuttujien järjestyksen uudelleen, Voit myös lisätä /KEEP-alikomennon ADD FILES-komentoon. Muuttujat järjestetään uudessa tiedostossa siinä järjestyksessä, jossa ne luetellaan /KEEP-alikomentossa. Jos et listaa kaikkia muuttujia / KEEP-alikomentossa, listaamattomat muuttujat eivät näy uudessa tiedostossa. Huomaa myös, että voit luetella muutaman ensimmäisen muuttujan, jos ne ovat ainoat, jotka on järjestettävä uudelleen, ja käytä sitten avainsanaa ALL, jotta muut muuttujat sisältyvät uuteen tiedostoon. Muuttujat, joita ei ole määritelty /KEEP-alikomentossa, pysyvät siinä järjestyksessä, jossa ne ovat alkuperäisissä tiedostoissa.
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 NAMEFAMID FAMID FAMIDINC INC INC
kuten näette, muuttujat uudessa tiedostossa ovat nyt tilauksen nimessä, famid inc.
5.1 tietueiden yhteensopimattomuus yhdestä yhteen yhdistämisessä
kahdessa tiedostossa voi olla tietueita, jotka eivät täsmää. Alla havainnollistamme tätä sisällyttämällä ylimääräinen isä (Karl famid 4), jolla ei ole vastaavaa perhettä, ja on olemassa kaksi ylimääräistä perhettä (5 ja 6) perhetiedostossa, joilla ei ole vastaavaa isää.
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.
kuten edellä, käytämme / in=fromdad luoda 0/1 muuttuja, joka osoittaa, onko tuloksena tiedosto sisältää tietueen tietoja dads tiedosto. Samoin, käytämme / in=fromfam ilmoittaa, jos tuloksena tiedosto on tietue faminc tiedosto. Lista ja RISTITAULUT sitten näyttää meille sopimattomista ennätyksistä.
luettelokomennon ulostulo osoittaa, että milloin oli epäyhdenmukaisia tietueita. Famid 4: lle fromfamin arvo on 1 ja fromfam on 0, kuten odottaisimme, koska famid 4: lle oli tietoja dadsista, mutta faminc: ltä ei saatu tietoja. Lisäksi, kuten odotamme, tämä tietue on voimassa olevat tiedot muuttujia dads tiedosto (nimi ja inc) ja puuttuvat tiedot muuttujia faminc (faminc96 faminc97 ja faminc98). Näemme famid 5: n ja 6: n käänteisen kaavan.
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
jos katsomme fromdad ja fromfam muuttujia, voimme nähdä, että on olemassa kolme tietuetta, jotka ovat vastaavia tietoja, yksi, joka on tietoja vain dads, ja kaksi tietuetta, jotka ovat tietoja faminc tiedosto vain. Alla oleva crosstab näyttää meille samat tulokset, ja se on helpompi tapa laskea matching kuin manuaalisesti tallettaminen matching.
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
tiedostojen sovittamisessa suosittelemme, että käytät tätä strategiaa tarkistaaksesi näiden kahden tiedoston yhteensopivuuden. Jos on odottamattomia ristiriitaisia tietueita,sinun pitäisi tutkia ymmärtää syy ristiriitaisten tietueiden.
voit poistaa joitakin tietueita SELECT IF: n avulla. Esimerkiksi, jos haluat pitää vain kirjaa, jossa isät sopivat perheen tiedot, voit kirjoittaa
SELECT IF fromdad AND fromfam.LIST.
tulokset on esitetty alla, mukaan lukien vain kolme vastaavaa kirjaa.
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 Mismatching records in one-to-many merge
SPSS käsittelee epäyhtenäisten tietueiden sisällyttämistä yhteen moneen mergeen eri tavalla kuin yksi yhteen merge. Muista, että yksi-to-monet yhdistää, on tiedosto, joka on yksi havainto, joka vastaa monia havaintoja toisessa tiedostossa; olkaamme viitata näihin yksi tiedosto ja monet tiedosto. Jos yhdessä tiedostossa on havaintoja, jotka eivät täsmää moneen tiedostoon, nämä havainnot eivät näy yhdistetyssä tiedostossa lainkaan. Jos monissa tiedostoissa on havaintoja, jotka eivät vastaa yhtä tiedostoa, nämä tietueet näkyvät yhdistetyssä tiedostossa. Jos tämä on mitä haluat, voit yhdistää tiedostot kuten on esitetty osassa 3, ja käytä /In= kuten on esitetty edellisessä osassa seurata matching. Kuitenkin,jos haluat ristiriitaiset tietueet yhdestä ja monista tiedoston molemmat näkyvät yhdistetyssä tiedostossa, voit käyttää matching strategia alla.
alla käytämme esimerkkiämme yhdistääksemme isät lasten kanssa, ja tässä esimerkissä meillä on ristiriitaiset tietueet molemmissa tiedostoissa. Alla täsmäämme tiedostot sisällyttämään kaikki ristiriitaiset tietueet yhdistettyyn tiedostoon. Eri osat on merkitty punaisella.
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.
punainen osio lisää lisäaskeleen matchingiin. Tämän vaiheen tarkoituksena on lisätä arvoja famid, jotka ovat vain dads tiedosto kids tiedosto. Se tekee tekemällä kahdenkeskisen yhdistymisen dadidin ja lasten välillä ja tallentaa tiedoston väliaikaiseksi. Koska Daid vain famid kaikkien isät, tämä yhdistää pohjimmiltaan lisää havaintoja tahansa famid, joka on dads tiedosto, mutta ei kids tiedosto, ja tallentaa tämän temp. Sitten, voimme sitten yhdistää temp dads2 ja temp on famid jokaista havaintoa dads2 tiedosto. Tämä varmistaa, että tuloksena tiedosto sisältää kaikki havainnot dads tiedosto, vaikka heillä ei ole vastaavaa kirjaa kids tiedosto. Tulos on esitetty alla. Todellakin, tiedosto sisältää havainnon isä Karl, jolla ei ole vastaavia lapsia. Jos olisimme jättäneet ylimääräisen koodin pois tässä vaiheessa, että ennätys ei olisi sisällytetty tähän tiedostoon.
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 muuttujaa, joilla on sama nimi, mutta eri tiedot
alla on tiedostot, joissa on TIEDOT isistä ja suvusta, mutta tarkastellaan tarkemmin muuttujien nimiä. Dads-tiedostossa on muuttuja inc98, ja perhetiedostossa on muuttujat inc96, inc97 ja inc98. Mennään eteenpäin ja yhdistää nämä tiedostot ja katsotaan, mitä SPSS tekee.
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.
tulokset on esitetty alla. Kuten näette, muuttuja inc98 on TIEDOT dads tiedosto, tiedosto, joka ilmestyi ensin MATCH FILES komento. Kun vertaat tiedostoja, joilla on sama muuttuja, SPSS käyttää sen tiedoston arvoja, joka näkyy aikaisintaan MATCH FILES-komennossa.
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
on olemassa pari tapaa, joilla voit ratkaista tämän ongelman.
ratkaisu #1. Ilmeisin ratkaisu on valita muuttujan nimet alkuperäiset tiedostot, jotka eivät ole ristiriidassa keskenään. Voit kuitenkin saada tiedostoja, joissa nimet on jo valittu.
Ratkaisu #2. Voit nimetä muuttujat uudelleen MATCH FILES-komennossa (joka nimeää muuttujat uudelleen ennen matching-komennon tekemistä). Näin voit valita muuttujien nimet, jotka eivät ole ristiriidassa keskenään, kuten alla on esitetty.
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.
kuten näet alla, muuttujat nimettiin uudelleen kuten määritimme.
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 samat muuttujat eri sanakirjatiedoilla
tämä ongelma on samanlainen kuin edellä esitetty. Tässä esimerkissä meillä on kaksi muuttujaa, joilla on sama nimi ja sama tieto, mutta niihin liittyy erilaisia sanakirjatietoja. Näihin sanakirjatietoihin voi sisältyä arvomerkintöjä ja/tai muuttuvia nimikkeitä. Kuten yllä olevassa esimerkissä, SPSS ottaa tiedot tiedostosta, joka on lueteltu ensimmäisenä MATCH FILES-komennossa. Virhettä tai varoitusviestiä ei anneta, jotta tietäisit, että myöhemmän tiedoston muuttujan tiedot ovat kadonneet. Ratkaisu tähän ongelmaan on luetella ensin MATCH FILES komento tiedoston kanssa sanakirjan tiedot, jotka haluat tuloksena tiedosto.
5.5 olet suorittanut ADD FILES-komennon, eikä mitään tapahtunut
jos suoritat vain ADD FILES-komennon, kuten alla on esitetty, SPSS ei tee mitään. Kuitenkin, näet merkinnän oikeassa alakulmassa data editor sanomalla ”muutos vireillä”.
ADD FILES FILE="dads.sav" /FILE="moms.sav"
ratkaisu: ratkaisu on lisätä joko execute-komento tai prosessikomento, joka pakottaa transformaation suorittamisen, kuten listakomento tai crosstab-komento.
ADD FILES FILE="dads.sav" /FILE="moms.sav"execute.