Sotkuiseen "lomakedataan" voi purra "Structured LISTs"-toiminto

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Sotkuiseen "lomakedataan" voi purra "Structured LISTs"-toiminto

Juha Valtonen


Yleensä kun sähköistä dataa saa käyttöönsä, niin ongelmana
on sen sisäänluku. Datan keruussa kun ei juurikaan osata yleensä
ottaa huomioon sen jatkokäsittelyä.

Huomasin hiljakkoin, että Survon vanha "Structured LISTs"-toiminto
voikin joskus olla oivallinen apuväline "lomakemuotoisesta" datasta
tarvittavien muuttujien lukemiseen.

Oletetaan, että meillä on vaikka jollain pdf-lomakkeilla tai internet-
kyselyllä kerättyä dataa, jossa joukossa on erilaista tekstimuotoista
vähemmän kiinnostavaa, ja ennen kaikkea, haluttujen muuttujien
poimimista häiritsevää tekstiä.

Jos tekstimuotoiseksi muutetussa tiedostossa on kuitenkin jokin
rakenne, jonka mukaan voidaan erottaa havainnot toisistaan,
ja paikallistaa halutut muuttujat, niin kannattaa tutkia
Survon kyselysysteemistä LIST? kyselyn kohta 2 = Structured LISTs.

Ensimmäiseksi pitää saada havainnot/lomakkeet erotettua toisistaan.
Survon tätä toimintoa varten teksti pitää saada EDT-kenttään, ja
nimenomaan kontrollisarakkeelle havainnot erottava merkki.
Jos tekstissä on esimerkiksi jokin avainsana havainnot/lomakkeet
erottavana tekijänä, niin tietyillä kikoilla saadaan ko. riville
erotusmerkki. Esimerkiksi jos lomake alkaa aina tekstillä
"KYSELYLOMAKE ALKAA", niin kikka on seuraava.
- Laitetaan tekstin alkuun komento INSERT CUR+1,END
- siirretään kursori kontrollisarakkeelle ja aktivoidaan komento
-> koko teksti ja kontrollisarake siirtyy pykälän oikealle, eli kontrollisarake
tulee tekstin puolelle.
- kirjoitetaan tekstin alkuun komento:
  REPLACE "*KYSELYLOMAKE ALKAA" "+KYSELYLOMAKE ALKAA"
- aktivoidaan komento
- sitten tekstin alkuun komento DELETE CUR+1,END
- ja taas siirretään kursori kontrollisarakkeen kohdalle ja aktivoidaan
-> alkuperäinen kontrollisarake siirtyy paikoilleen, mutta nyt jokaisen lomakkeen
alussa tähtimerkin sijasta on +-merkki.

Seuraavaksi pitäisi selvittää ne muuttujat, jotka lomakkeista halutaan poimia.
Jos esimerkisi lomakkeella on ollut täyttökentät, joissa on kysytty vaikka
Nimi:____________________
Ikä: ___________    ja Sukupuoli: _   (vaihtoehdot Mies/Nainen)

Eli tekstissä on siis jotain stringejä, josta voidaan erottaa halutun muuttujan alkaminen.
Talletetaan tämä teksti EDT-kentässä, mutta tehdään siihen ensin
DEF-määrittely. Merkitään "tekstidata" vaikka alkamaan riviltä A, ja nimetään vaikka TDATAksi.
DEF TDATA,A,END
Talletetaan kenttä nimellä TEKSTI.

Nyt voidaan tehdä vaikka toiseen kenttään listamäärittelyjä, joka pitää tallettaa tekstitiedostoksi
.LST -nimellä:


SAVEP CUR+1,# P.LST
/ tähän kirjoitetaan määrittely, kommentit voidaan laittaa näin kauttaviivoilla /
/ ensin määritetään haettavat listat - tässä esimerkissä vain yksi
TDATA,TEKSTI
END
/ tämän jälkeen määritetään tapausten/havaintojen erottelu, tässä esimerkissä siis +-merkki
/ oletetaan, että tapausten välissä on tyhjä rivi merkkinä lomakkeen päättymisestä.
/ jolloin sitä ei tarvitse määritellä.
CASE_START=+
/ Sitten määritellään muuttujat
LIST FIELDS:
1 S   20  Name      TEXT:Nimi:_,20
2 N    1  Age       TEXT:Ikä:_,2
3 S    6  Sex       TEXT:Sukupuoli:_,6
END


Kun nämä määrittelyt on talletettu P.LST-tiedostoksi, voidaan
antaa komento:

LIST SAVE P TO poiminta.txt,char(9)

Jolloin Survo poimii lähdetekstistä kolme muuttujaa tekstitiedostoon tabulaattorilla erotettuna.
Ja sehän on sitten taas helppo viedä SVO-tiedostoksi


FILE SAVE poiminta.txt TO NEW POIMINTA  /  DELIMITER=TAB   NAMES=1   FIRST=2


***
Tämä  edellä oleva on myös lyhennelmä osasta esitelmääni laivaseminaarissa 2017.
Jos tämä jäi kiinnostamaan, mutta ei ihan selvinnyt tästä, niin otapa yhteyttä...

:JVa