Re: Datan siirtämistä .SVO ja R:n data.framen välillä read.svo, write.svo

Posted by Petri Palmu on
URL: https://forum.survo.fi/Datan-siirtamista-SVO-ja-R-n-data-framen-valilla-read-svo-write-svo-tp523p541.html

Sussa wrote
Kiitos Petri - pidän mielessä.

Nyt yritin yhdistellä kolme tiedostoa (objektit fi, gb, ger alla)
merge-komennolla ja se onnistui ilman kommervenkkejä, mutta kun
fix-komennolla yritin katsoa lopputulosta, olivat kaikki solut tyhjiä. Eli
sarakkeiden päällä olivat muuttujien nimet, mutta mitään lukarvoja ei ollut.

Tiedostoissa siis kaikissa samat muuttujanimet, taustatietomuuttujien nimiä
lukuunottamatta, jolloin ymmärsin, että merge yhdistelisi kaikki identtiset
muuttujat allekkain.

Mutta ei...

Tämä siis käyttämäni komento:

mydata1 = merge(fi, gb)
kokodata = merge(mydata1, ger)


2015-01-24 17:51 GMT+02:00 Petri Palmu [via Survo Forum] <
[hidden email]>:

>  Sussa wrote
> Mistäköhän lähtisin etsimään mokaani, kun kumpikaan noista keinoista ei
> johda mihinkään?
>
> Tässä ilmoitukset:
>
> *R CUR+1,CUR+1
> *READ.SVO(s5valfi)
>
> could not find function "READ.SVO"
>
> *FILE LOAD s5valfi TO R>fi
>
> Cannot open data file
>
> Ja olen varmistanut, että hakemistopolku on oikea ja sen päässä on juuri
> tuonniminen .svo -tiedosto.
>
>
> Heippa, R:ssä kaikki on eroa pienillä ja suurilla kirjaimilla ("Survo:n"
> osalta FILE LOAD = file load).  Lisäksi nimet annetaan joko ' ' tai " "
> sisällä.
>
> read.svo():ssa ilmeisesti pitää myös olla perässä tiedostopääte .SVO.
> Elikkäs:
> d <- read.svo("s5.valfi.SVO");
> str(d); head(d);
>
> read.svo() on ihan kätevä funktio, jolla pääset mihin tahansa .SVO
> muotoiseen dataa käsiksi :)
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://forum.survo.fi/Datan-siirtamista-SVO-ja-R-n-data-framen-valilla-read-svo-write-svo-tp523p538.html
>  To unsubscribe from Datan siirtämistä .SVO ja R:n data.framen välillä
> read.svo, write.svo, click here
> <http://forum.survo.fi/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=523&code=c3Vzc2FiQGdtYWlsLmNvbXw1MjN8LTE4NDU5NjQ2MzI=>
> .
> NAML
> <http://forum.survo.fi/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>
Tuo merge() tuntuu aina joskus vähän oudolta.

?merge()

saat esiin ko. toiminnon parametrit. Kannattanee ilmoittaa parametrit,

merge(x=data1, y=data2, by="yhdistelyavain", all.x=TRUE, sort=TRUE...)

Tuo all.x tarkoittaa, että kaikki data1:n rivit otetaan mukaan lopputulokseen. Jos lisäät vielä all.y=TRUE, niin lopputulokseen tulee kaikki x ja y datan taustamuuttujien arvot.
by parametrilla ilmoitetaan minkä taustamuuttujan (tai muuttujien) suhteen yhdistely tehdään. data1 ja data2 taustamuuttujakenttien nimet voivat olla eri, esim. "sp" ja "sukup" (molemmat tarkoittaa sukupuolta). Mutta tällöin by:n sijaan by.x="sp", by.y="sukup". Ongelma varmasti selviää jos laitat molemmista datoista kuvauksen. R:n str(data) ja head(data) saat tiedostojen rakennetta näkyviin.
Luultavasti merge ei jostain syystä löydä yhtään samaa havaintoa täsmättävien taustatietojen välillä.