[vastaus aiempaan viestiin]
Kirjoittaja: | Kimmo Vehkalahti |
---|---|
Sähköposti: | - |
Päiväys: | 7.3.2004 12:39 |
Joitakin vastauksia Petrin panelisukroon liittyviin kysymyksiin: >1. Jätin erityistapauksen X:iä vain yksi kpl (pitkässä muodossa), >nyt vielä tekemättä, koska useamman muuttujan tilanne on >kiinnostavampi ja sukro tod.näk. täytyy haaroittaa uuden aineiston >muuttujien nimeämistä varten ks. seur. 2. Kannattaa yrittää pujottaa yhden muuttujan hallinta samaan koodiin usean muuttujan tilanteen kanssa ennemminkin kuin tehdä sille mitään omia haaroituksia. Korkeintaan riittänee joissain kohdissa ohittaa joitain usean muuttujan tilanteelle tyypillisiä kohtia. Ohitusehtona voi käyttää tuota X-muuttujien lukumäärää W#vars tai tehdä asialle oma indikaattori Wonevar / Wmultivar tms. >2. En osannut tehdä sukroa, joka nimeäisi uuden leveän aineiston >muuttujat silloin, kun X:iä > 1 kpl. Nyt ne nimeytyvät 1,2,... Jos haluat nimetä ne kuten sukrokoodistasi ilmenee, siis: >(X1.1,...,X1.n;X2.1,...,X2.n;...;Xp.1,...,Xp.n){R} >täytyy (toistaiseksi) tehdä käsin{R} >Huom. p = muuttujien lkm., n = ositteiden lkm.{R} niin tarvitset kaksi sisäkkäistä silmukkaa hoitamaan homman; ehkä jotain tämänkaltaista (muuta merkintöjä tarpeen mukaan, en tässä katsonut mitä oli käyttänyt muuttujien ja ositteiden lkm:istä): *TUTSAVE KOE / def Wp=W1 Wn=W2 Wi=W3 Wj=W4 *{Wp=3}{Wn=4}{Wi=0}{R} + WNvar: {Wi=Wi+1} - if Wi > Wp then goto WNend *{Wj=0} + WNdiv: {Wj=Wj+1} - if Wj > Wn then goto WNvar *X{print Wi}.{print Wj}{R}{goto WNdiv} + WNend: {end} Koodinpätkä tuottaa tällaista jälkeä näillä parametreilla (3 ja 4): /KOE X1.1 X1.2 X1.3 X1.4 X2.1 X2.2 X2.3 X2.4 X3.1 X3.2 X3.3 X3.4 Nämä nimet voi sitten istuttaa FILE STATUS/UPDATE -kaavioon sopivalle paikalle esim. blokkisiirtona tai kirjoittaa ne suoraan paikoilleen. >3. En tiennyt, miten FILE STATUKSESSA sukro poimisi tietyllä >maskilla merkityt muuttujien nimet (ks. sukron täsmennykset >TIME_VAR=vuosi GROUPING_VARIABLE=NO1 ja GROUP_NAMES=CASE), joita >tarvitaan myöhemmässä vaiheessa. Sujuu näin: MASK=SSSSSTMNXX FILE SHOW XLo STAT XLo CUR+1,STATUS / #MASK=NMTSX #var=10 #act=10 #obs=36 #N=1 #M=1 #T=1 #S=5 #X=2 [tutkitaan {save spec etc.} avulla, että on annettu täsmälleen 1 kpl N-, M- ja T-muuttujia] Selvitetään nimet (huom. ei rajariviä; sama MASK käytössä) ja poimitaan ne sukromuistiin {save word etc.}: FILE STATUS XLo / GETVAR=N 4 4 NO1 (#.###) FILE STATUS XLo / GETVAR=M S 7 SUKUP FILE STATUS XLo / GETVAR=T S 5 vuosi Tällöin et tarvitse ko. täsmennyksiä vaan aktivointikirjain riittää. >4. Puuttuvien tietojen uudelleenkoodaus MISSING:ksi muuten >valmiissa leveässä aineistossa (taaskaan en keksinyt sopivaa keinoa >sukrokielellä) ks. tilanne sukron toiminnan päättyessä Tässä (kuten myös kohdassa 2 edellä) voinet käyttää MASK-täsmennystä leveään aineistoon kohdennettuna muodossa "MASK=#1(A)" koska ilmeisesti kaikilla muilla muuttujilla on joko maski S tai T. Sitten vain samaan tapaan kuin alussa mutta toisinpäin se TRANSFORM (mikä sinulla olikin jo valmiina koodissa, ongelma siis ilmeisesti oli juuri tämä muuttujien osoittaminen). >5. Aineistoa osittava muuttuja täytyy edelleen olla numeerinen >1,2,...,n Rajoitus ei ole varmaan kauhean paha, mutta uskoisin sen olevan myös yleistettävissä merkkijonomuuttujiin. En kuitenkaan nyt hahmota, missä kaikissa kohdissa tällä on vaikutusta, joten ehkä voit tarkentaa tätä vielä myöhemmin. terv. Kimmo
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!