[viesti Survo-keskustelupalstalla (2001-2013)]
Kirjoittaja: | Petri Palmu |
---|---|
Sähköposti: | - |
Päiväys: | 7.12.2007 17:02 |
Moi, Minulla oli taannoin kahden datan yhdistelyongelma, jossa päädata (paneeliaineisto) oli muotoa: DATA _MAIN ID T X Y V 1 1 - - 1 1 2 - - 1 2 1 - - 1 2 2 - - 1 2 3 - - 1 3 2 - - 1 3 3 - - 1 Toisaalta päädataan haluttiin viedä toisesta järjestelmästä olevia yksilöaikatietoja (ID , T), joka oli muotoa: DATA _K1 ID T X Y Z 1 1 1 - S 1 2 2 1 U 1 3 4 2 R 2 1 3 - V 2 2 4 3 O 3 1 2 2 * 3 2 4 1 M 3 3 6 2 M Päädatassa ei ole kaikkia _K1 datan mittauksia ja toisaalta _K1 datasta puuttuu ID = 2 yksi havainto (T=3). Kun yritin käyttää FILE COPY + MATCH toimintoa tähän yhdistelyyn, niin se oli tavattoman hidas ja valitti koko ajan riveistä joille ei ollut vastinetta _K1 ja MAIN välillä. Voinee olla, että MATCH + MODE=2 olisi käyttökelpoinen tässä tilanteessa. Lähdin kuitenkin ratkaisemaan kivuliasta ongelmaani vähän eri suunnasta, missä FILE AGGR on keskeisessä roolissa. ................... Viedään tiedostoksi FILE COPY _MAIN TO NEW MAIN FILE COPY _K1 TO NEW K1 Tehdään avain (hyödynnän erästä Survo+R sukroani ) Toki tämän voi tehdä Survon VAR operaatiolla /R_VAR IDT=paste(MAIN$ID, MAIN$T, sep="-") TO MAIN /R_VAR IDT=paste(K1$ID, K1$T, sep="-") TO K1 Alustetaan Z muuttuja VAR Z:S1=MISSING TO MAIN ..................................... FILE LOAD MAIN DATA MAIN*,A,B,C ID T X Y IDT 1 1 - - 1-1 1 2 - - 1-2 2 1 - - 2-1 2 2 - - 2-2 2 3 - - 2-3 3 2 - - 3-2 3 3 - - 3-3 ............. FILE SHOW K1 FILE SORT MAIN BY IDT TO MAIN2 / päädatasta kopio FILE SORT MAIN BY IDT TO TMP1 / FILE SORT K1 BY IDT TO TMP2 Apumuuttuja aggregointia varten VAR APU:1=0 TO TMP1 / VAR APU:1=1 TO TMP2 ............... FILE COPY TMP2 TO TMP1 / pinotaan datat .............. FILE LOAD TMP1 DATA TMP1*,H,I,J ID T X Y V IDT Z APU 1 1 - - 1 1-1 - 0 1 2 - - 1 1-2 - 0 2 1 - - 1 2-1 - 0 2 2 - - 1 2-2 - 0 2 3 - - 1 2-3 - 0 3 2 - - 1 3-2 - 0 3 3 - - 1 3-3 - 0 1 1 1 - - 1-1 S 1 1 2 2 1 - 1-2 U 1 1 3 4 2 - 1-3 R 1 2 1 3 - - 2-1 V 1 2 2 4 3 - 2-2 O 1 3 1 2 2 - 3-1 * 1 3 2 4 1 - 3-2 M 1 3 3 6 2 - 3-3 M 1 ............................ Sitten aggregointi... FILE SORT TMP1 BY IDT,APU TO TEMP1 FILE DEL TEMP2 FILE AGGR TEMP1 BY IDT TO TEMP2 VARIABLES: ID FIRST ID T FIRST ID IDT FIRST IDT X LAST X Y LAST Y Z LAST Z APU MIN APU END FILE LOAD TEMP2 DATA TEMP2*,K,L,M ID T IDT X Y Z APU 1 1 1-1 1 - S 0 1 1 1-2 2 1 U 0 1 1 1-3 4 2 R 1 2 2 2-1 3 - V 0 2 2 2-2 4 3 O 0 2 2 2-3 - - - 0 3 3 3-1 2 2 * 1 3 3 3-2 4 1 M 0 3 3 3-3 6 2 M 0 X,Y,Z arvot "aggregoitiin" sopivasti LASTin avulla. APU = 1 arvolla varustettu rivit eivät kuulu päädataan, joten niistä pitää vielä päästä eroon... ....................... Otetaan vain ne rivit, jotka esintyvät päädatassa: FILE COPY TEMP2 TO NEW TEMP3 / IND=APU,0 FILE SHOW TEMP3 ............. Viedään alkuperäiseen MAIN(2) aineistoon Nyt ei tarvita täsmäys-muuttujaa IDT mutta lajittelujärjestys on oltava oikea. VARS=X,Y,Z FILE COPY TEMP3 TO MAIN2 / MATCH=# MODE=1 ......................... Lopputulos (vertaa _MAIN ja _K1 datojen kanssa) FILE LOAD MAIN2 DATA MAIN2*,N,O,P ID T X Y V IDT Z 1 1 1 - 1 1-1 S 1 2 2 1 1 1-2 U 2 1 3 - 1 2-1 V 2 2 4 3 1 2-2 O 2 3 - - 1 2-3 - 3 2 4 1 1 3-2 M 3 3 6 2 1 3-3 M Massiivisilla aineistoilla - paljon yksilö-aikahavaintoja - tällä tavalla useiden tuntien mätsäys näyttäisi kutistuvan muutamaan hassuun minuuttiin. Onkohan joku muu käyttänyt aiemmin samaa kikkaa? Vai löytyykö vielä parempi tapa? t. Petri
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!