Ero sivun ”Funktioita R-toolsiin” versioiden välillä
p (→generic: Puolustus!) |
p (→generic) |
||
(3 välissä olevaa versiota 2 käyttäjän tekeminä ei näytetä) | |||
Rivi 10: | Rivi 10: | ||
===generic=== | ===generic=== | ||
Tämä koodi sisältää funktiot '''dropall''' ja ''' | Tämä koodi sisältää funktiot '''dropall''', '''PTable''', '''wildcard''' ja '''detail.merger'''. | ||
<rcode name="generic"> | <rcode name="generic"> | ||
Rivi 54: | Rivi 54: | ||
###################################### | ###################################### | ||
################### wildcard laajentaa tähdellä merkityt rivit koskemaan kaikkia sarakkeen arvoja. | |||
## parametrit: | |||
## data: data.frame jonka rivejä laajennetaan | |||
## cols: vektori sarakkeista, jotka käsitellään. Oletusarvona ovat kaikki sarakkeet, jotka sisältävät jossakin ruuduistaan tähden. | |||
wildcard <- function(data, cols = {out <- NA; for(i in 1:ncol(data)) {out[i] <- "*" %in% levels(data[, i])}; colnames(data)[out]}) { | |||
for(i in cols) { | |||
temp <- data.frame(a = levels(data[, i])[levels(data[, i]) != "*"], b = "*") | |||
temp <- merge(data, temp, by.x = i, by.y = "b") | |||
temp <- temp[colnames(temp) != i] | |||
colnames(temp)[colnames(temp) == "a"] <- i | |||
data <- rbind(data[data[i] != "*", ], temp) | |||
} | |||
return(data) | |||
} | |||
############################## | |||
##### detail.merger mergaa 2 "päällekkäistä" mutta eri tarkkuudella ilmoitettua dataa | |||
## parametrit | |||
## data1 (pakollinen): data.frame jossa vähemmän selitteitä (epätarkempi) | |||
## data2 (pakollinen): data.frame jossa enemmän selitteitä (tarkempi) | |||
## rescol1: sarakkeen nimi, josta numeroarvot löytyvät data1:ssä | |||
## rescol2: sma kuin rescol1 mutta data2:lle | |||
## extracells: arvo joka annetaan niille indekseille uudessa taulussa jotka puuttuivat data1:stä niille riveille | |||
## joilla on ilmoitettu "jämät" eli epätarkka arvo - summa tarkemmista uusien indeksien yli | |||
detail.merger <- function(data1, data2, rescol1 = "Result", rescol2 = "Result", extracells = "rest") { | |||
colnames(data1)[colnames(data1)==rescol1] <- "Result1" | |||
colnames(data2)[colnames(data2)==rescol2] <- "Result2" | |||
temp <- as.data.frame(as.table(tapply(data2[,"Result2"], data2[,colnames(data2)%in%colnames(data1)], sum))) | |||
temp <- merge(temp, data1) | |||
temp[,"Result2"] <- temp[,"Result1"] - temp[,"Freq"] | |||
temp[,colnames(data2)[!colnames(data1)%in%colnames(data2)]] <- extracells | |||
out <- rbind(data2, temp[,colnames(temp)%in%colnames(data2)]) | |||
colnames(out)[colnames(out)=="Result2"] <- rescol2 | |||
out | |||
} | |||
################################# | |||
</rcode> | </rcode> | ||
{{ | {{todo|Hei! Tarvitsin tuota wildcardia pikaisesti, joten tein sen itse. Eli funktion, joka laajentaa tähdellä merkityt rivit koskemaan kaikkia sarakkeen arvoja. Mutta mitä kuuluu niille funktioille, jotka tuottavat otoksia jakaumista, kuten se 2 - 5? --[[Käyttäjä:Jouni|Jouni Tuomisto]] 17. tammikuuta 2012 kello 22.02 (EET)|Teemu Rintala|project=Opasnet}} | ||
{{kommentti|#:|Laitoin yksityiskohtien merge metodin tuohon yllä olvaan koodiin. Input.interp on vielä kesken, mutta eiköhän se nyt pian valmistu.|--[[Käyttäjä:Teemu R|Teemu R]] 18. tammikuuta 2012 kello 15.59 (EET)}} | |||
Huom! On käytettävä include-parametriä näin: <nowiki>include="page:Funktioita_R-toolsiin|name:generic"</nowiki>. Eli tuossa on huomattava tuo alaviivan käyttö, välilyönti tuossa sivun nimessä aiheuttaa ongelman.|--[[Käyttäjä:Ehac|Einari Happonen]] 12. joulukuuta 2011 kello 08.49 (EET) | |||
==Perustelut== | ==Perustelut== |
Nykyinen versio 29. tammikuuta 2012 kello 21.57
Moderaattori:Jouni (katso kaikki)
Sivun edistymistä ei ole arvioitu. Arvostuksen määrää ei ole arvioitu (ks. peer review). |
Lisää dataa
|
Kysymys
Miten pitäisi laskea tyypillisiä terveysvaikutusarviointien laskutehtäviä R-ohjelmalla?
Vastaus
generic
Tämä koodi sisältää funktiot dropall, PTable, wildcard ja detail.merger.
--#: Laitoin yksityiskohtien merge metodin tuohon yllä olvaan koodiin. Input.interp on vielä kesken, mutta eiköhän se nyt pian valmistu. --Teemu R 18. tammikuuta 2012 kello 15.59 (EET)
Huom! On käytettävä include-parametriä näin: include="page:Funktioita_R-toolsiin|name:generic". Eli tuossa on huomattava tuo alaviivan käyttö, välilyönti tuossa sivun nimessä aiheuttaa ongelman.|--Einari Happonen 12. joulukuuta 2011 kello 08.49 (EET)
Perustelut
Tälle sivulle voi listata erilaisia hyödyllisiksi katsottuja funktioita R:ää varten, kunhan ne sopivat yleiseen käyttöön. On tärkeää pitää tämä sivu yhdenmukaisena vastaavan englanninkielisen sivun op_en:Functions for R-tools kanssa, jotta R-koodit toimivat molemmissa wikeissä.
Päätelmiä koodissa olleista virheistä:
- --#: Jos lokaatiot ovat 0.5 ja 1.0, jälkimmäinen muutetaan R:n faktorissa automaattisesti 1:ksi. Jos sen sijaan lokaatioita on 1, 0.5, 1.0 ja joitakin tekstikenttiä, 1 ja 1.0 tulkitaan eri faktorin leveleiksi. Kannattaa siis alunperinkin jättää turhat desimaalit pois datatauluista, jolloin niiden yllättävä tippuminen pois ei aiheuta matchaysongelmia. --Jouni Tuomisto 10. joulukuuta 2011 kello 14.01 (EET)
- --#: Opasnet-kannassa on toiminto, jolla samaa tarkoittavat lokaatiot voidaan yhdistää. Tästä kuitenkin syntyy se ongelma, että kannasta tarjotaan ulos eri lokaatiota kuin mitä sinne on pistetty sisään, esim. lokaation Max sijasta tulee max, ja sitten eri taulujen yhdistäminen R:ssä mergellä ei onnistu. Ehkä tämä toiminnallisuus pitäisi ottaa pois päältä, koska käyttäjä ei juuri voi hallita sitä eikä tunnistaa virhettä. Lisäksi se on muistaakseni toteutettu kannassa siten, että se on universaali, jolloin eri objektien ja actien lokaatiot pakotetaan samaksi, vaikka sama sana eri yhteyksissä oikeasti tarkoittaisi eri asioita. Koko tämä aihe liittyy semanttisiin ongelmiin, joita ei juuri ole Opasnet-kannassa huomioitu ja toteutukset ovat kökköjä kuten tämä. --Jouni Tuomisto 10. joulukuuta 2011 kello 14.01 (EET)
Katso myös
Viitteet
Aiheeseen liittyviä tiedostoja
<mfanonymousfilelist></mfanonymousfilelist>