Datansiirto Musteen ja R:n välillä

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Datansiirto Musteen ja R:n välillä

Petri Palmu
Avaisin tähän tämän keskustelun, eli miten data siirtyy R:n ja Musteen välillä (tarkoitan lähinna .SVO tai .MAT R:n data.frame:ksi tms. ja toisinpäin). Olen osin unohtanut eri tavat, niistä olisi muutenkin hyvä laittaa esimerkkejä...
Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä

Reijo Sund
Administrator
Survo-data (tiedosto tai toimituskentän eri datamuodot) R:n data frameksi:
FILE LOAD <data> TO R>data
R> summary(data)
R> attributes(data)

R:n data frame Survo dataksi:
FILE SAVE R>data TO NEW <data>

Matriisit eivät vielä siirry suoraan vaan ne pitää muuntaa ensin Survo-dataksi ja taas matriisiksi R:ssä:
FILE SAVE MAT <matrix> TO NEW MAT
FILE LOAD MAT TO R>mat
R>mat <- as.matrix(mat)
Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä - .SVO => html table

Petri Palmu
Datan esittäminen html-taulukkona

DATA A
N      X1   X2
Survo  -60   AAA
Muste  2.09  BBB


FILE LOAD A TO R>A

R CUR+1,CUR+6
f_writeData2HTMLtable1(data=A, file="A.html",
        class=c(NULL, "stat")[1], # Esim.  "class='stat'" for css
        attr=c("border=2 align=left")[1] ,
        rownames=FALSE, caption=paste("Taulukko:"));

#############


LOADP A.html


<CAPTION ALIGN="bottom"> Taulukko: </CAPTION>
                    
 N  X1  X2
 Survo  -60.00  AAA
 Muste  2.09  BBB

/OPEN A.html



Funktion koodi:


#####################################################
#### _WRITE DATA FRAME INTO HTML TABLE 1_ / ######
"f_writeData2HTMLtable1" <- function(data=NULL, file="testi_tbl.html",
                 class=c(NULL, "stat")[1], #####  "class='stat'")[1],
                 attr=c("border=2 align=left")[1] ,
                 rownames=FALSE,
                 caption="") {
require(xtable);
lv_a <- "";
if(!is.null(class)) {
lv_a <- paste("class='", class,"'", sep="") };

print(xtable(data,
  caption=caption), type="html",
  file=file,
  sanitize.text.function = function(x){x},
  html.table.attributes = paste(lv_a , attr),
  include.rownames=rownames
     )
  }; ###
#### END WRITE DATA FRAME INTO HTML TABLE
### EX.
##D1 <-  data.frame(X=c("A","B"), Y=c(1,2), Z=c("Hannu", "Kerttu"));
##
##f_writeData2HTMLtable1(data=D1, file="testi.html", class=NULL,
##         attr="border=1");
##
############################

Reply | Threaded
Open this post in threaded view
|

MTAB HTML documentation

Reijo Sund
Administrator
MTAB: producing output in HTML-format
Last change 01.12.2000 mpk

MTAB: output in HTML (Markku Korhonen)

The output of MTAB is given in HTML if any of the following parameters are defined. These parameters affect only HTML-output
HTML_BEGIN
HTML_END
The starting statements of an HTML document are generated if HTML_BEGIN=1
The ending statements are generated if HTML_END=1
BODYBGCOLOR
BODYTEXTCOLOR
BODYLINKCOLOR
BODYVLINKCOLOR
BODYALINKCOLOR
The colors for background, text and links of the whole document
HTMLTITLE The TITLE (HEADER part) of the HTML-document; the same title is used as the main title (H1) in the BODY of the document
HTMLNAMEGenerates an anchor with the given name
TABLTITLEThe title of the table
TBGCOLORThe background color of the table
THDCOLORThe color for the table title
vvvvvvvvTITLEThe label texts for grouping and object variables may be given in the form
variableTITLE=variable_label_without_blanks
HREFVBLE
HREFBASE
If a row variable name is given by HREFVBLE then a link is generated for each value of that row variable in the form
<a href=bbbbbiii.htm>iii</A>
where the common start for all values is given by HREFBASE and the varing part is defined by the first three characters of the current group value.
HTMLFILEThe name of the html output file. If not given then the output is written in edit field

......................

The following statements generate a normal output in the edit field

MTAB IEADATA,END+2
VARIABLES=Knowldge
GROUPING=Attitude


Means, Deviations and Frequencies

      Attitude Attitude Attitude Attitude
             1        2        3    Total
      Knowldge Knowldge Knowldge Knowldge

 M      83.412   72.282   53.833   69.853
 D      35.370   31.480   31.971   32.991
 F          17      103       30      150

Completing with some HTML-related statements:

MTAB IEADATA,END+2
VARIABLES=Knowldge
GROUPING=Attitude
HTML_BEGIN=1 HTML_END=1
TABLTITLE=Tietotestin_pistemäärä_ja_suhtautuminen_luonnont._aineisiin<BR>keskiarvot;_hajonnat_ja_lukumäärät

The generated table looks now:

Tietotestin pistemäärä ja suhtautuminen luonnont. aineisiin
keskiarvot, hajonnat ja lukumäärät
Attitude
1 2 3 Total
Knowldge Knowldge Knowldge Knowldge
83.412 72.282 53.833 69.853
35.370 31.480 31.971 32.991
1710330150

The next example produce a two-way table of means with links to the files corresponding the values of variable Sex:

MTAB IEADATA,END+2
VARIABLES=Knowldge
GROUPING=Attitude,Sex
Attitude=1(Like),2(DontKnow),3(NotLike)  Sex=1(Boys),2(Girls)
HTML_BEGIN=1   HTML_END=1
HTMLTITLE=IEA-tutkimus_Ruotsin_koululaisista
HTMLNAME=IEAtutkimus
TABLTITLE=Tietotestin_keskim._pistemäärä_ja_suhtautuminen_luonnont._sukupuolittain
AttitudeTITLE=Suhtatuminen_luonnont
SexTITLE=Sukupuoli   OPTIONS=MEANS
KnowldgeTITLE=Tietotestin_pistemäärä
HREFBASE=knowsex  HREFVBLE=Sex
HTMLFILE=C:\web\ieakoe.htm
TBGCOLOR=aqua

IEA-tutkimus Ruotsin koululaisista

Tietotestin keskim. pistemäärä ja suhtautuminen luonnont. sukupuolittain
Sukupuoli Suhtatuminen_luonnont
LikeDontKnow NotLike Total
Tietotestin pistemäärä Tietotestin pistemäärä Tietotestin pistemäärä Tietotestin pistemäärä
Boys 93.000 73.579 56.636 74.162
Girls 60.400 70.674 52.211 64.929
Total 83.412 72.282 53.833 69.853

Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä

Petri Palmu
In reply to this post by Reijo Sund
Tuossa tuo attributes(data) antaa mm. jotain tämän näköistä:


$status.varname
 [1] "X        X  "
 [2] "TYYTYV2  TYYTYV2 (###.################)
 [3] "TYOMARKK TYOMARKK (##.#################)"
 [4] "TAVHVKO  TAVHVKO (##.################)"
 [5] "SAIPV    SAIPV (###.###############)"

Siis FILE STATUksen tyyppistä.

Tässä tuleekin kysymys, että miten muuttujien pitemmät selitykset saisi fiksusti siirtymään R:n ja .SVO välillä? Status.varnamesta voisi noukkia mahd. pitemmän nimet, esim. jos ne olisi kuten alla:


$status.varname
 [1] "X        X  "
 [2] "TYYTYV2  TYYTYV2 (###.################)  Kokonaistyytyväisyys työelämään (0-100) "
 [3] "TYOMARKK TYOMARKK (##.#################)"
 [4] "TAVHVKO  TAVHVKO (##.################)"
 [5] "SAIPV    SAIPV (###.###############) Sairauspäivät vuodessa"

Toki tuo vaatii vähän merkkijonon manipulointia... (esim. gsub()).

Toinen suunta on tietty sitten, kun R:n data.frame viedään .SVOksi.

Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä

Reijo Sund
Administrator
Petri Palmu wrote
Tuossa tuo attributes(data) antaa
Siis FILE STATUksen tyyppistä.
Toki tuo vaatii vähän merkkijonon manipulointia... (esim. gsub()).
Attribuuteissa on tosiaan suoraan .SVO-filen metadatat, joita mm. FILE STATUS näyttää. Ja ne siirtyvät mukana juuri siksi, että niitä voisi halutessaan käyttää R:n puolella. Merkkijonon manipulointi menee samoin kuin .SVO-fileiden kanssa eli 8 ensimmäistä merkkiä kertovat muuttujan lyhyen nimen ja loput sitten pitkän nimen, muotoilut yms.

Petri Palmu wrote
Toinen suunta on tietty sitten, kun R:n data.frame viedään .SVOksi.
Tuohon suuntaan ei vielä siirry juurikaan metadataa, mutta se olisi toki periaatteessa mahdollista..
Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä

Petri Palmu
OK. Mietin keinoa, miten tuosta attributes() voisi napata mahdollisen pitemmän muuttujaselityksen. Tosiaan gsub / regex toiminnoilla, mutta kenties fiksuinta olisi tägätä se jotenkin esim.

<LNAME>Pitkä muuttujanimi</LNAME>

Tuommoinen pitäisi sitten vaan suunnitella etukäteen...

Minusta on tärkeätä, että myös metatieto kulkee mahdollisimman hyvin R:n objektien ja .SVO,... välillä (niin kuin tuossa nyt ainekset näyttävät olevankin :)
Reply | Threaded
Open this post in threaded view
|

Re: Datansiirto Musteen ja R:n välillä

Kimmo Vehkalahti
Administrator
Metadata on olennaisen tärkeää tutkimusprosessin dokumentaation kannalta.
R:ää on kritisoitu siitä, että SAS- ja SPSS-datojen metatiedot eivät (ainakaan kätevästi) liiku sinne, kun dataa siirretään. Olisi hyvä ottaa tässä(kin) asiassa pisteet kotiin,kun niitä on tarjolla.
Eräänlainen metadatan pilaamisen ääriesimerkki on Mplus, joka haluaa datat sisään sellaisina txt-tiedostoina, joista on POISTETTU muuttujien nimet ekalta riviltä!
Reply | Threaded
Open this post in threaded view
|

Seminaariesitys 25.4.13 Musteen datansiirtokeinoista

Petri Palmu
In reply to this post by Reijo Sund
Ohessa liitteenä toimituskenttä.DATAMOV3.EDT
Reply | Threaded
Open this post in threaded view
|

Välilyönnit merkkijonoissa FILE LOAD <data> TO R><data>

Petri Palmu
In reply to this post by Petri Palmu

DATA _K1
X
aaaaaa
bb
cccccccccccc

FILE COPY _K1 TO NEW K1

FILE LOAD K1 TO R>D

D
D$X


Survo data file K1: record=35 bytes, M1=5 L=64  M=1 N=3
> D
             X
1 aaaaaa      
2 bb          
3 cccccccccccc

> D$X
[1] "aaaaaa      " "bb          " "cccccccccccc"

Survo data file K1: record=35 bytes, M1=5 L=64  M=1 N=3


R:ssä read.table():n yhteydessä on strip.white=TRUE toiminto, joka poistaa välilyönnit merkkijonojen edestä ja takaa. Tuon tyyppinen optio voisi olla ihan kätevä myös .SVO -> R-data yhteydessä?