+ Näytä koodi- Piilota koodi
library(OpasnetBaseUtils)
library(xtable)
####Budjettilaskenta: suunnitelluista palkka- ja muista menoista lasketaan kokonaisbudjetti. Toistaiseksi käsitellään vain menoja, tuloja ei ole sisällytetty.
budjettilaskenta <- function(page, laitos = "THL", vuosi = "2011") {
data <- op_baseGetData("opasnet_base", page)[, -c(1,2)]
data <- reshape(data, idvar = "obs.1", timevar = "Havainto", direction = "wide")[, -c(1,4,5,6)]
colnames(data) <- c("Kustannuslaji", "määrä", "kuvaus")
#print(xtable(data), type='html')
temp <- data.frame(Kustannuslaji = kustannuslaji, määrä = määrä, kuvaus = kuvaus)
data <- rbind(data, temp)
#print(xtable(data), type='html')
kertoimet <- op_baseGetData("opasnet_base", "Op_fi2704")
kertoimet <- kertoimet[kertoimet$Laitos == "THL" & kertoimet$Vuosi == "2011" & kertoimet$Rahoittaja == "STM", ]
#kertoimet
YK <- kertoimet[kertoimet$Kerroin == "Yleiskustannus", "Result"]
SK <- kertoimet[kertoimet$Kerroin == "Palkan sivukulu", "Result"]
cat("Yleiskustannuskerroin:", YK, "Sivukulukerroin", SK, "\n")
palkka <- op_baseGetData("opasnet_base", "Op_fi2705")[, -c(1,2,7)]
#print(xtable(palkka), type = 'html')
palkka <- palkka[palkka$Laitos == laitos & palkka$Vuosi == vuosi, -c(1,3)]
colnames(palkka)[1] <- "Kustannuslaji"
#print(xtable(palkka), type = 'html')
data <- merge(data, palkka, all.x=TRUE)
#print(xtable(data), type = 'html')
test <- is.na(data$Result)
data$Result <- ifelse(test, data$määrä, data$Result * data$määrä)
data$määrä <- ifelse(test, 0, data$määrä)
colnames(data)[c(2,4)] <- c("hlö-kk", "summa")
print(xtable(data), type = 'html')
test <- "Palkka" == substr(data$Kustannuslaji, 1, 6)
data$Kustannuslaji <- ifelse(test, "Palkka", data$Kustannuslaji)
palkat <- sum(data[test, "summa"])
out <- data.frame(Kustannuslaji = c("Sivukulut", "Yleiskustannus"), summa = c(palkat*SK, palkat*(1+SK)*YK))
out <- rbind(data[, c("Kustannuslaji", "summa")], out)
print(xtable(out), type = 'html')
out <- as.data.frame(as.table(tapply(out$summa, out$Kustannuslaji, sum)))
print(xtable(out), type = 'html')
out$summa <- ifelse(out$Kustannuslaji =="Tulot", out$Kustannuslaji, -out$Kustannuslaji)
out <- rbind(out, data.frame(Kustannuslaji = "Yhteensä", summa = sum(out$summa)))
print(xtable(out), type = 'html')
}
| |