|
Administrator
|
Mahtaako olla yleinen ongelma: tavallinen FILE AGGRE ja optio SUM, tuloksena oikean rakenteinen mutta tyhjä data?! Kokeilin vielä KUNNAT-datalla: tulee näemmä jotain, muttei sitä mitä pitäisi.
|
|
Administrator
|
Olipa kummallinen bugi. Luki jostain syystä lähtödataa väärästä kohtaa ainakin aggregaattimuuttujan osalta ja siksi tuotti roskaa (tai mahdollisesti tyhjää), joka sitten kirjoitettiin (oikein) tulostiedostoon. Paikka meni sekaisin kohdassa, jossa hiukan poikkeuksellisella tavalla kopioitiin lähtötiedoston header tulostiedoston "pohjaksi". Sain korjattua käyttämällä ftell:iä ja fseek:iä rewind:in sijaan, mutta en ihan täysin ymmärrä miksi alkuperäinen versio ei toiminut .
Toimiiko muissakin ympäristöissä versiossa 0.6.5 vai pitääkö yrittää penkoa syytä tarkemmin? |
|
Jos aggregoi kahden muuttujan esim. HETU,VUOSI mukaan aineiston, niin on pakko ensin tehdä esim. VAR str(HETUV)=str(HETU)&"-"&str(VUOSI) tyyppinen apumuuttuja. Isoilla datoilla (myös .SVO kokorajoituksen takia) olisi mukavaa, jos voisi välttää apumuuttujan tekemisen eli aggregoida suoraan:
FILE AGGR <DATA> BY HETU,VUOSI TO <DATA2>... Vai onkohan multa jotain jäänyt huomaamatta? Voisiko FILE AGGR tehdä tuon tarvittavan indeksoinnin jotenkin taustalla? |
|
Administrator
|
Eikös tässä ole se KEY_SAVED -täsmennys, jolla tuo kätevöityy? Siis FILE SORT:issa.
|
Mutta tuossa pitää luoda dataan lisäsarake? Eli datan koko kasvaa. Tätä datan paisuttamista yritän välttää... kun datan kokoraja tulee vastaan... Muuten, FILE SORTissa ei ole mahdollista valita muuttujia VARS=X1,Z5 ... ? Usein on aika tarpeetonta sortata koko massaa, kun FILE AGGRiin tarvitsee vain osan muuttujista... |
|
In reply to this post by Kimmo Vehkalahti
Jep:
a more direct method is to use a specification KEY_SAVED=<string_variable> in the FILE SORT operation which normally precedes FILE AGGR since the data must be sorted by <aggr_variable>. KEY_SAVED in FILE SORT creates a <string_variable> if needed in the <new_data_file> and saves the combined sort keys in it. |
|
Administrator
|
In reply to this post by Petri Palmu
Minusta tämä on hyvä ajatus ja olen kaivannut sitä itsekin monituisia kertoja, varsinkin kun KEY_SAVED on kranttu muuttujatyyppien suhteen. Homman sai hoidettua helposti ja edellä oleva tapa "aggregaattiblokin" määrittämiseksi on lisätty versioon 0.6.9. |
Loistavaa, ko. asia on kyllä ollut kauan mielessä... :) |
|
Administrator
|
In reply to this post by Petri Palmu
Tämä ominaisuus on tosiaan puuttunut FILE SORTista ja silloin tällöin tulee kyllä vastaan tilanteita, joissa mieluusti valikoisi myös muuttujat suoraan järjestämisen yhteydessä. Usein tämän pystyy "kiertämään" tiputtamalla turhia muuttujia vähän aikaisemmassa vaiheessa pois esim. FILE COPYn yhteydessä, mutta isojen datojen kanssa "turha" kopiointi ei ole kivaa. Versiossa 0.6.9 mukana muuttujien valikointi (VARS, MASK yms.) myös FILE SORTissa. |
|
Jälleen FILE AGGR:n kimpussa :) Vaikuttaisi siltä, että FILE AGGR:ssa tuo MODE-funktio ei koske merkkijonomuuttujaa (vain numeerista). Toki moodin voi tuottaa muilla tavoin (esim. muuntaa merkkijono numeeriseksi), mutta voisiko harkita F-AGGR:n yhteyteen?
Siis esim: DATA _K X B 1 A 1 C 2 D 2 A 2 D FILE SHOW K1 FILE COPY _K TO NEW K FILE AGGR K BY X TO K1 VARIABLES: X FIRST X B MODE B END FILE LOAD +K1 X B 1 0 2 0 |
|
Kyselin tuosta MODE -funktiosta merkkijonomuuttujien yhteydessä. Minusta se olisi aika hyödyllinen. Vaikka sen saa muullakin tavoin, niin suoraan file aggr:saa olisi mukavoittava tekijä
|
|
Törmäsin ao. muistivirheeseen FILE AGGR yhteydessä (laaja data):
Survo data file TMP1: record=113 bytes, M1=30 L=64 M=22 N=20321157 ##################### ![]() Aggregointi näyttää suunnilleen tältä: FILE AGGR TMP1 BY ID TO TID1 VARIABLES: ID FIRST ID VKK1 FIRST VKK VKK2 LAST VKK SP FIRST SP IKAT0 MEAN IKAT0 MKNO1 FIRST MKNO MKNO2 LAST MKNO moMKNO MODE MKNO SOP1 FIRST SOPID SOP2 LAST SOPID moSOP MODE SOPID N N - NTL N TL NHVAP N I_HVAP END Epäilen, että noi MODE:t (jotka ei toimi, kun lähtömuuttuja on merkkijonomuuttuja) aiheutti ongelman... Lisäksi tuossa ongelma oli, että mä en päässyt virheilmoituksesta pois muuten kuin sulkemalla väkivalloin Survo R... |
Höh, huomasin että olin yhdessä vaiheessa unohtanut FILE COPY:stä TO "NEW", jolloin samaa dataa oli pinoutunut aiemman päälle. Ilmeisesti muistikoko (2gb) ylittynyt (havainnotkin olivat menneet ihan sekaisin...).
|
|
Administrator
|
Lisäsin MODE-tuen merkkijonomuuttujille ja muutin modulin sisäistä resurssienhallintaa niin ettei virhettä resurssien loppumisesta pitäisi tulla edes tuollaisissa patologisissa tilanteissa. Nämä siis mukana sitten versiosta 0.6.13 lähtien.
|
Heippa, toimiikohan tuo X MODE X nyt myös merkkijonomuuttujilla. Mielestäni kokeilin, mutta näyttäisi tulevan tyhjää (numeerinen toimii ok) ja jotain omituisia symboleja kuten | joita ei ole lähtömuuttujassa. Kokeilin myös esim. X:S5 MODE X Resurssivirhettä ei enää tullut :) |
| Free forum by Nabble | Edit this page |
