Onko niin, että FILE SAVE R>df TO svo on ihan sama toiminto kuin FILE COPY R>df TO svo ja mitkään määritteet (esim FIRST, LAST, SELECT) ei pure komentoon? Tekee siis aina uuden svo:n, ja muuttujamuodot määrätyvät automaagisesti? Törmäsin tilanteeseen, jossa suurehko luku tuli svo-tiedostossa neljätavuiseksi, ja alkuperäinen arvo muuttui siirrossa? |
Administrator
|
Nuo FILE SAVE ja FILE COPY ovat tosiaan sama asia. Määreitä ei taida olla mukana tuohon R:stä Survoon suunnassa mukana niin, että toimisivat. Toisin päin normaalit datan rajoittimet muistaakseni kuitenkin ovat käytettävissä. R:n datatyypit muunnetaan Survo datan tyypeiksi automaattisesti ja pitäisi mennä niin, ettei dataa ainakaan häviä. Muistaakseni nelostyyppiä ei käytetä lainkaan vaan on varmuuden vuoksi aina kasityyppi, jos ei taatusti pienempään mahtuva rajoitettu R:n tyyppi. Voisitko laittaa tuosta ongelmallisesta R-datasta sen osan, jossa muuntuu väärin Survoon päin? Silloin olisi helpointa selvittää mikä ei mene oikein.
|
Ongelman juurisyy taitaa olla read.csv:ssä:
Lähtödata on tämän muotoista: Onnett_id;Osall_id;Osnro;Oslaji;Oslajisel;Perõv;Perõvsel;Ajolaji;Ajolajisel;Kuollut;Loukk;Kulkusuun;Kulkussel;Ajoneuvika;Ajoneuvmas 9621978;17173988;1;30;henkil÷auto;-1;Ei arvoa;-1;Ei arvoa;0;0;-1;Ei arvoa;12;1635 9621978;17173989;2;10;jalankulkija;-1;Ei arvoa;-1;Ei arvoa;0;1;-1;Ei arvoa;; 9621357;17173990;1;32;kuorma-auto;1;puoliperõvaunu;-1;Ei arvoa;0;0;-1;Ei arvoa;; 9621357;17173991;2;30;henkil÷auto;-1;Ei arvoa;-1;Ei arvoa;0;0;-1;Ei arvoa;12;1580 Kun sen lukee dataframeksi, niin nuo kaksi ekaa muuttujaa tuleva "int"-muotoisiksi > str(osall) 'data.frame': 18228 obs. of 15 variables: $ Onnett_id : int 9621978 9621978 9621357 9621357 9621979 9621979 9621980 9621980 9621459 9621459 ... $ Osall_id : int 17173988 17173989 17173990 17173991 17173992 17173993 17173994 17173995 17173996 17173997 ... $ Osnro : int 1 2 1 2 1 2 1 2 1 2 ... $ Oslaji : int 30 10 32 30 30 30 30 30 32 30 ... $ Oslajisel : chr "henkilöauto" "jalankulkija" "kuorma-auto" "henkilöauto" ... Ja kun dataframen vie survoon, niin nuo int muodot tulevat nelostyypiksi, mistä sitten seuraa se, että noissa suurissa luvuissa alkaa jotain mennä pieleen. Ongelmahan poistuu, jos hoksaa muuttaa muuttujan R:ssä as.numeric ennen Survoon siirtoa. file status tmp Copied from R data frame osall FIELDS: (active) 1 NA_ 4 Onnett_id 2 NA_ 4 Osall_id 3 NA_ 2 Osnro 4 NA_ 2 Oslaji 5 SA_ 31 Oslajisel 6 NA_ 2 Peräv Mutta siis, ilmeisesti R:n datafamessa voi integerinä olla niin suuria lukuja, joita Survo ei enää täysin ymmärrä nelostyyppinä. |
Administrator
|
Kiitos ongelman seikkaperäisestä kuvauksesta. Näytti tosiaan olevan R2SVO-muunnoksessa ehtoja muuttujan minimi ja maksimiarvojen perusteella sille, että milloin tulee mitäkin tyyppiä, kun R:ssä on int-tyyppinen muuttuja, mutta jos ei näytä olevan tyyppiin 1 tai 2 mahtuva, niin lopuille tulee tyyppi 4. Kävin vaihtamassa sen nyt tyypiksi 8 eli sen pitäisi korjata tilanne. Toivottavasti ei tule ongelmia siitä, että tuo muunnoksen tyyppi nyt vaihdettu - ei ole iso työ katsoa rajoja erikseen tyypille 4, mutta en sitä nyt kuitenkaan alkanut tekemään, kun tuo tyyppi 8 joka tapauksessa "turvallisempi". Pitäisi tässä illan mittaan päivittyä R-universeen, josta voi sitten päivittää uuden version (joskin versionumero pysyi samana eli kannattaa katsoa, että varmasti hakee uuden version). |
Toimii - varmasti hyvä ratkaisu käyttää suoraan 8-muotoa.
Kiitos taas :) |
Free forum by Nabble | Edit this page |