Re: Sukrokurssi jatk: pandatan muokk. Long -> Wide

[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:
[ei vastauksia]

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!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.