+ Näytä koodi- Piilota koodi
library(OpasnetBaseUtils)
library(xtable)
opasnet.csv
opasnet.data
page <- "Op_fi2814"
C.air.outdoor <- 0.118/1000
C.air.indoor <- 0.118/1000
C.soil <- 2645
C.dw <- 0.06
C.lfc <- 2.5
C.tfc <- 0.9
C.berries <- 1.9
C.bw <- 0.06
C.sw <- 0.003
Abs.skin.soil <- 0.003
Kp <- 0.001
#Riskinarviointi <- function(Whatever){
data <- op_baseGetData("opasnet_base", page)
data <- tidy(data)
#############Riskinarvioinnin laskenta
#Aikuinen, haitta-aineen päivittäinen saanti
data.a <- data[data$Henkilö == "Aikuinen",]
Bw.a <- data.a[data.a$Lyhenne == "Bw",][,5]
At.a <- data.a[data.a$Lyhenne == "At",][,5]
##Hengitystiet
###Ilma
Ir.air.a <- data.a[data.a$Lyhenne == "Ir.air",][,5]
Ef.air.indoor.a <- data.a[data.a$Lyhenne == "Ef.air.indoor",][,5]
Air.inh.a <- ((C.air.outdoor * (24-Ef.air.indoor.a/24)) + (C.air.indoor * (Ef.air.indoor.a/24)) * Ir.air.a) / (Bw.a * At.a)
##Ruuansulatuskanava
###Juomavesi
Ir.dw.a <- data.a[data.a$Lyhenne == "Ir.dw",][,5]
Ef.dw.a <- data.a[data.a$Lyhenne == "Ef.dw",][,5]
Dw.ing.a <- (C.dw * Ir.dw.a * Ef.dw.a) / (Bw.a * At.a)
###Maaperä
Ir.soil.a <- data.a[data.a$Lyhenne == "Ir.soil",][,5]
Ef.soil.a <- data.a[data.a$Lyhenne == "Ef.soil",][,5]
Soil.ing.a <- (C.soil * (Ir.soil.a / 1000000) * Ef.soil.a) / (Bw.a * At.a)
###Vihannekset
Ir.lfc.a <- data.a[data.a$Lyhenne == "Ir.lfc",][,5]
F.lfc.loc.a <- data.a[data.a$Lyhenne == "F.lfc.loc",][,5]
Lfc.ing.a <- (C.lfc * Ir.lfc.a * F.lfc.loc.a) / Bw.a
###Juurekset
Ir.tfc.a <- data.a[data.a$Lyhenne == "Ir.tfc",][,5]
F.tfc.loc.a <- data.a[data.a$Lyhenne == "F.tfc.loc",][,5]
Tfc.ing.a <- (C.tfc * Ir.tfc.a * F.tfc.loc.a) / Bw.a
###Marjat
Ir.berries.a <- data.a[data.a$Lyhenne == "Ir.berries",][,5]
F.berries.loc.a <- data.a[data.a$Lyhenne == "F.berries.loc",][,5]
Berries.ing.a <- (C.berries * Ir.berries.a * F.berries.loc.a) / Bw.a
###Pintavesi
Ir.sw.a <- data.a[data.a$Lyhenne == "Ir.sw",][,5]
Ef.sw.a <- data.a[data.a$Lyhenne == "Ef.sw",][,5]
Sw.ing.a <- (C.sw * Ir.sw.a * Ef.sw.a) / (Bw.a * At.a)
##Iho
Skin.sa.a <- (4 * Bw.a + 7) / (Bw.a + 90) * 10000 #Lasketaan ihon kokonaispinta-ala
###Maaperä
Soil.ad.skin.a <- data.a[data.a$Lyhenne == "Soil.ad.skin",][,5]
F.skin.soil.a <- data.a[data.a$Lyhenne == "F.skin.soil",][,5]
Soil.derm.a <- (C.soil * Soil.ad.skin.a * 0.000001 * Skin.sa.a * F.skin.soil.a *Abs.skin.soil * Ef.soil.a) / (Bw.a * At.a)
###Pesuvesi
Ef.bw.a <- data.a[data.a$Lyhenne == "Ef.bw",][,5]
Ed.bw.a <- data.a[data.a$Lyhenne == "Ef.bw",][,5]
F.skin.bw.a <- data.a[data.a$Lyhenne == "F.skin.bw",][,5]
Bw.derm.a <- (C.bw * 0.001 * Kp * Ef.bw.a * Ed.bw.a * F.skin.bw.a) / (Bw.a * At.a)
###Pintavesi
Ef.sw.a <- data.a[data.a$Lyhenne == "Ef.sw",][,5]
Ed.sw.a <- data.a[data.a$Lyhenne == "Ef.sw",][,5]
F.skin.sw.a <- data.a[data.a$Lyhenne == "F.skin.sw",][,5]
Sw.derm.a <- (C.sw * 0.001 * Kp * Ef.sw.a * Ed.sw.a * F.skin.sw.a) / (Bw.a * At.a)
Tot.intake.a <- Air.inh.a + Dw.ing.a + Soil.ing.a + Lfc.ing.a + Tfc.ing.a + Berries.ing.a + Sw.ing.a + Soil.derm.a + Bw.derm.a + Sw.derm.a
#Lapsi, haitta-aineen päivittäinen saanti
data.c <- data[data$Henkilö == "Lapsi",]
Bw.c <- data.c[data.c$Lyhenne == "Bw",][,5]
At.c <- data.c[data.c$Lyhenne == "At",][,5]
##Hengitystiet
###Ilma
Ir.air.c <- data.c[data.c$Lyhenne == "Ir.air",][,5]
Ef.air.indoor.c <- data.c[data.c$Lyhenne == "Ef.air.indoor",][,5]
Air.inh.c <- ((C.air.outdoor * (24-Ef.air.indoor.c/24)) + (C.air.indoor * (Ef.air.indoor.c/24)) * Ir.air.c) / (Bw.c * At.c)
##Ruuansulatuskanava
###Juomavesi
Ir.dw.c <- data.c[data.c$Lyhenne == "Ir.dw",][,5]
Ef.dw.c <- data.c[data.c$Lyhenne == "Ef.dw",][,5]
Dw.ing.c <- (C.dw * Ir.dw.c * Ef.dw.c) / (Bw.c * At.c)
###Maaperä
Ir.soil.c <- data.c[data.a$Lyhenne == "Ir.soil",][,5]
Ef.soil.c <- data.c[data.c$Lyhenne == "Ef.soil",][,5]
Soil.ing.c <- (C.soil * (Ir.soil.c / 1000000) * Ef.soil.c) / (Bw.c * At.c)
###Vihannekset
Ir.lfc.c <- data.c[data.c$Lyhenne == "Ir.lfc",][,5]
F.lfc.loc.c <- data.c[data.c$Lyhenne == "F.lfc.loc",][,5]
Lfc.ing.c <- (C.lfc * Ir.lfc.c * F.lfc.loc.c) / Bw.c
###Juurekset
Ir.tfc.c <- data.c[data.c$Lyhenne == "Ir.tfc",][,5]
F.tfc.loc.c <- data.c[data.c$Lyhenne == "F.tfc.loc",][,5]
Tfc.ing.c <- (C.tfc * Ir.tfc.c * F.tfc.loc.c) / Bw.c
###Marjat
Ir.berries.c <- data.c[data.c$Lyhenne == "Ir.berries",][,5]
F.berries.loc.c <- data.c[data.c$Lyhenne == "F.berries.loc",][,5]
Berries.ing.c <- (C.berries * Ir.berries.c * F.berries.loc.c) / Bw.c
###Pintavesi
Ir.sw.c <- data.c[data.c$Lyhenne == "Ir.sw",][,5]
Ef.sw.c <- data.c[data.c$Lyhenne == "Ef.sw",][,5]
Sw.ing.c <- (C.sw * Ir.sw.c * Ef.sw.c) / (Bw.c * At.c)
##Iho
Skin.sa.c <- (4 * Bw.c + 7) / (Bw.c + 90) * 10000 #Lasketaan ihon kokonaispinta-ala
###Maaperä
Soil.ad.skin.c <- data.c[data.c$Lyhenne == "Soil.ad.skin",][,5]
F.skin.soil.c <- data.c[data.c$Lyhenne == "F.skin.soil",][,5]
Soil.derm.c <- (C.soil * Soil.ad.skin.c * 0.000001 * Skin.sa.c * F.skin.soil.c *Abs.skin.soil * Ef.soil.c) / (Bw.c * At.c)
###Pesuvesi
Ef.bw.c <- data.c[data.c$Lyhenne == "Ef.bw",][,5]
Ed.bw.c <- data.c[data.c$Lyhenne == "Ef.bw",][,5]
F.skin.bw.c <- data.c[data.c$Lyhenne == "F.skin.bw",][,5]
Bw.derm.c <- (C.bw * 0.001 * Kp * Ef.bw.c * Ed.bw.c * F.skin.bw.c) / (Bw.c * At.c)
###Pintavesi
Ef.sw.c <- data.c[data.c$Lyhenne == "Ef.sw",][,5]
Ed.sw.c <- data.c[data.c$Lyhenne == "Ef.sw",][,5]
F.skin.sw.c <- data.c[data.c$Lyhenne == "F.skin.sw",][,5]
Sw.derm.c <- (C.sw * 0.001 * Kp * Ef.sw.c * Ed.sw.c * F.skin.sw.c) / (Bw.c * At.c)
Tot.intake.c <- Air.inh.c + Dw.ing.c + Soil.ing.c + Lfc.ing.c + Tfc.ing.c + Berries.ing.c + Sw.ing.c + Soil.derm.c + Bw.derm.c + Sw.derm.c
###########Ilmoitetaan tulokset
cat("Laskennassa käytetty haitta-aineen pitoisuus väliaineessa (mg/kg) \n")
Pitoisuus <- data.frame(Ulkoilma=C.air.outdoor, Sisäilma=C.air.indoor, Juomavesi=C.dw, Maaperä=C.soil, Vihannekset=C.lfc, Juurekset=C.tfc, Marjat=C.berries, Pesuvesi=C.bw, Pintavesi=C.sw)
print(xtable(Pitoisuus), type = 'html')
cat("Keskimääräinen päivittäinen altistuminen haitta-aineelle (µg/kg), aikuinen \n")
Kokonaissaanti.a <- data.frame(Ilma=Air.inh.a, Juomavesi=Dw.ing.a, Maaperä.rsk=Soil.ing.a, Vihannekset=Lfc.ing.a, Juurekset=Tfc.ing.a, Marjat=Berries.ing.a, Pintavesi.rsk=Sw.ing.a, Maaperä.iho=Soil.derm.a, Pesuvesi.iho=Bw.derm.a, Pintavesi.iho=Sw.derm.a, Kokonaissaanti=Tot.intake.a)*1000
print(xtable(Kokonaissaanti.a), type = 'html')
cat("Keskimääräinen päivittäinen altistuminen haitta-aineelle (µg/kg), lapsi \n")
Kokonaissaanti.c <- data.frame(Ilma=Air.inh.c, Juomavesi=Dw.ing.c, Maaperä.rsk=Soil.ing.c, Vihannekset=Lfc.ing.c, Juurekset=Tfc.ing.c, Marjat=Berries.ing.c, Pintavesi.rsk=Sw.ing.c, Maaperä.iho=Soil.derm.c, Pesuvesi.iho=Bw.derm.c, Pintavesi.iho=Sw.derm.c, Kokonaissaanti=Tot.intake.c)*1000
#Kokonaissaanti.c <- data.frame(Altistusreitti = c("Ilma", "Juomavesi", ...), Henkilö = , Arvo = c(Air.inh.c, Dw.ing.c, Soil.ing.c...)
#, Vihannekset=Lfc.ing.c, Juurekset=Tfc.ing.c, Marjat=Berries.ing.c, Pintavesi.rsk=Sw.ing.c, Maaperä.iho=Soil.derm.c, Pesuvesi.iho=Bw.derm.c, Pintavesi.iho=Sw.derm.c, Kokonaissaanti=Tot.intake.c)*1000
print(xtable(Kokonaissaanti.c), type = 'html')
cat("Osuus kokonaissaannista, aikuinen \n")
Saanti.osuus.a <- Kokonaissaanti.a / Kokonaissaanti.a$Kokonaissaanti
print(xtable(Saanti.osuus.a), type = 'html')
cat("Osuus kokonaissaannista, lapsi \n")
Saanti.osuus.c <- Kokonaissaanti.c / Kokonaissaanti.c$Kokonaissaanti
print(xtable(Saanti.osuus.c), type = 'html')
#return(Kokonaissaanti.c)
#}
col.common <- "Henkilö"
col.condition <- "Lyhenne"
condition <- "Bw"
col.result <- "Result"
########################## tf is a function that takes one large table, finds matching rows and produces a standard-format vector that can be operated with easily.
# parameters: data = a data frame that contains the data
# condition = a vector with conditions for each condition column. The length must be the same as ncol for the cols.
# cols = vector with names of columns that contain the indices that must match in the data
# resultcol = the column that contains the actual values.
tf <- function(condition = condition, ...) {
out <- data[data[col.condition] == condition, c(col.common, col.result)]
out <- merge(unique(data[col.common]), out, x.all = TRUE)
return(out[col.result])
}
##FUNKTIOSSA ON SELLAINEN VIRHE, ETTÄ JOS RIVI PUUTTUU, SE JÄÄ KOKONAAN POIS JA TULEE FRAME SHFT.
## SAMOIN JOS ON SAMAA RIVIÄ KAHDESTI, TULEE YLIMÄÄRÄISIÄ RIVEJÄ.
#data <- data.frame(Henkilö = c("A", "C", "A"), Lyhenne = c("Hei", "Bw", "Hei"), Result = c(1,2,3))
#tf("Hei")
altistus <- function(C.air.outdoor, C.air.indoor, ...) {
Air.inh <- ((C.air.outdoor * (24 - tf("Ef.air.indoor") / 24)) + (C.air.indoor * tf("Ef.air.indoor") / 24) * tf("Ir.air")) / (tf("Bw") * tf("At"))
return(Air.inh)
}
altistus(C.air.outdoor = 10, C.air.indoor = 50)
a<- Riskinarviointi(Whatever)
print(a)
print(sum(a))
RA(sum(a))
| |