Pitkät muuttujanimet Survon datatiedostoon

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Petri Palmu
Sähköposti:    -
Päiväys: 19.10.2006 13:40

Pientä vaivaa aiheuttaa se, että mm. R:ssä ei ole kunnollista
tapaa muuttujien lyhyille käyttönimille ja pidemmille selityksille.
Näinpä R:ssä muuttujien nimet saattavat venyä (mm.
useiden peräkkäisten muuttujamuunnosten seurauksena) yli 8 merkkiä
pitkiksi, mikä taas voi aiheuttaa ongelmia FILE SAVE:ssa
(duplikaatit).

Koetin hahmotella sukroa, joka siirtäisi txt-tiedostoon talletetut
sarakenimet Survon datatiedostoon (FILE STATUS).
Sarakenimet voivat olla tiedostossa joko riveillä tai "sarakkeilla".
Yhtä hyvin nimet voivat siis olla excelistä peräisin olevasta
tekstitiedostosta, jolloin vain poimitaan ensimmäinen
Tuota sarakesuuntaa en vielä saanut aikaan (kun vaatii transponointia).

Jäin miettiä, että voisiko sukron hyödyntämään MOVE-toimintoon
lisätä transponointi-mahdollisuus (se olisi siistimpti kuin
kikkailla TRANSP -toiminnon kanssa toimituskentässä)?

Voisi myös ajatella toisen sukron tekemistä, jolla saisi kenttien
selitykset esim. LINREG-, MINSTAT-tulosteisiin.


Sukron listaus:
*TUTSAVE NAM2DAT           /
/
/ NAM2DAT N,D copies (longer field) names in the text file N as the
/ variable descriptions in the Survo data file D
/ with TRANSP=0 (default) names are assumed to be stacked as rows
/ (e.g. colnames from R data frame:  writeLines(names(data), 'names')
/ -> no transpose needed for FILE STATUS
/ with TRANSP=1 names are as columns (e.g. Excel view)
/ -> transpose needed for FILE STATUS
*{init}{tempo -1}{ins line}{ins line}{line start}
*{save spec TRANSP W6}
*FILE STATUS {print W2}{act}{save spec N W3}
*{u}{line start}{ref set 1}FIND "FIELDS:"{act}{R}
*{save cursor W4,W5}{W4=W4+1}{ref jump 1}{erase}
/
- if W6 '=' {} then goto A
- if W6 = 1 then goto B
+ A:
*MOVE 1,{print W3},1,30 FROM {print W1} TO {print W4},40{act}{del line}
*{goto C}
+ B:
*MOVE 1,1,1,300 FROM {print W1} TO {print W4},40{act}{del line}
+ C:
*{line start}{r5}UPDATE{act}
*{end}
*

......................
Leikkiesimerkki PAINO muuttujasta, jolle on tehty
useita muunnoksia

SAVEP CUR+1,CUR+3,coln
ID
PITUUS
dlog_ma4_MdPAINO

(esim. Excelin otsikko rivi)
SAVEP CUR+1,CUR+1,coln2
ID PITUUS dlog_ma4_MdPAINO


DATA _K
X1  X2   X3
1   60   170
2   70   160
3   65   180


FILE COPY _K TO NEW K
FILE SHOW K
SHOW coln2
....................
/NAM2DAT  coln,K       /
FILE UPDATE K
 Copy of data matrix _K
FIELDS: (active)
   1 NA_   1 X1       (##)             ID
   2 NA_   1 X2       (##)             PITUUS
   3 NA_   2 X3       (###)            dlog_ma4_MdPAINO
END
Survo data file K: record=25 bytes, M1=7 L=64  M=3 N=3


FILE COPY _K TO NEW K2

Vaati kääntämisen...
....................
/NAM2DAT  coln2,K2      /  TRANSP=1
FILE UPDATE K2
 Copy of data matrix _K
FIELDS: (active)
   1 NA_   1 X1       (##)             ID PITUUS dlog_ma4_MdPAINO
   2 NA_   1 X2       (##)
   3 NA_   2 X3       (###)
END
Survo data file K2: record=25 bytes, M1=7 L=64  M=3 N=3

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!

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