2020-08-14 13:36:36 +02:00

2237 lines
144 KiB
R

#################################
# KRATEK OPIS STRUKTURE POROČIL #
#################################
# Poročilo je sestavljeno na podlagi R kode (izračuni) in latex kode (.tex, struktura poročil)
# Vhodne datoteke se nahajajo v mapi "temp", kjer sta dve ločeni datoteki s podatki za +
# ANKETO PRED IZPITOM in ANKETO PO IZPITU
# V mapi se nahajajo tudi šifranti (ki služijo opredelitvi izvajalcev fakultete, predmetov, +
# načina študija, študijskih programov), itd: +
# Podrobno preberi: http://ul.1ka.si/index.php?fl=2&lact=1&bid=40&parent=3
# V poročilu so ocenjene, obarvane in v tabelah predstavljene vrednosti komponent za izvajalca, +
# vrednosti komponent predmetov PRED izpitom in vrednosti komponent PO izpitu.
# Komponente za izvajalca so: Kakovost, Pripravljenost, Razumljivost, Zanimivost, Kritičnost, Korektnost
# Komponente predmeta (ANKETA PRED): Zadovoljstvo, Usklajenost, Samostojnost, Literatura, Obveščenost, Info. na spletu, Preverjanje
# Komponente predmeta (ANKETA PO):Vsebine, naloge, Ocenjevanje, Kompetence, Ustreznost Kreditnih točk
########
# skripta: koda.r je osnova (ki jo vedno najprej poženemo) in je namenjena opredelitvi +
# spremenljivk, vektorjev, podatkovnih okvirjev in izračunu povprečij, kvantilnih rangov, +
# obarvanju, itd.
# Obarvanja povprečij komponent in kvantilnih rangov opredelimo v skkripti funkcije.R
# Skripto tabelaBy.r pa uporabimo samo pri izpisu PDF za izvajalca. Pri izpisu za programe, fakulteto tega ne uporabljamo.
# Ko smo pognali skrpto kodo.r, lahko generiramo poročilo za izvajalce, tako da poženemo +
# skirpto koda-izvajalec_predmet.r.
# Skripta koda-fakulteta.r služi generiranju poročila za fakulteto.
# Skripta koda-programi pa generira poročila za študijske programe.
########
# Glavo dokumenta, obarvanje vrednosti, širino tabel, rotiranje stolpcev, +
# nove strani, poglavja, kazalo itd. generiramo s pomočjo latex kode, ki je +
# prenesena v R.
# V mapi latexkosi so denifirane tex. datoteke, ki so namenjene generiranju +
# glave (prva stran, kazalo) in noge (zaključek) poročila
### Poročilo za izvajalca: glavno dokumenta definira tex datoteka a-glava.tex, +
# ki jo preberemo v skripti koda-izvajalec_predmet.r
### Poročilo za fakulteto: glavo dokumenta definira tex datoteka
# a-glava-program.tex (glej skripto koda-fakulteta.r)
### Excel datoteka "navodila" je narejena s strani programerja in +
# služi opredelitvi anketnih vprašanj za izvajalca, ter predmete (ANKETA PRED IN PO IZPITU) +
# oz. komponent, po katerih računamo povprečja, kvantilne range, itd.
# Vsebuje tudi mejne vrednosti posameznih obarvanj (stolpec: pobarvanka), zaokroževanje +
# izračunanih povprečij v tabelah na eno decimalko (stolpec: decimalke), itd.
## //KRATEK OPIS STRUKTURE POROČIL// ##
## 1KA strežnik ##
# Del, ki ga potrebuje Peter, da generira ustrezno poročilo za posamezno fakulteto na strežniku
# Tega ne poganjamo
#params <- commandArgs(trailingOnly = TRUE)
#ID <- params[1]
## //1KA strežnik// ##
# Potrebne knjižnice #
libraries <- c('tools', 'psych', 'Hmisc', 'reports', 'fmsb','car','Cairo','openxlsx','qpcR')
lapply(libraries, FUN = function(y) {
do.call('require', list(y))})
# //Potrebne knjižnice// #
# Naložimo dodatne funkcije (obarvanje povprečja + generiranje tabel v poglavju Analiza predmeta po programih in letnikih:
# glej poročilo za izvajalca )
# Če želimo spremeniti barvo, moramo novo barvo defnirati v skripti funkcije.r in v tex. datotekah (npr za izvajalca: a-glava.tex)
# !preveri! #
source('Evalvacija/R/funkcije/funkcije.r') # Barvanje povprečnih ocnen komponent, kvantilnig rangov, rotiranje imena stolpcev v tabelah, itd.
source('Evalvacija/R/funkcije/tabelaBy.r') # Generiranje nekaterih tabel (Glej poročilo za izvajalca: Analiza predmeta po programih in letnikih)
options(nwarnings = 10000)
# ignore these warnings:
# "[DATA NOT ENOUGH] at 3 NA" <- fmsb::radarchart ne more naredit radar grafa predmeta ker ni vsaj 3 vrednosti za ocene komponent predmeta
# "In FUN(newX[, i], ...) : no non-missing arguments to min; returning Inf/-Inf" <- ne more izračunat min in max ker je n=0
# Ustvarimo mapo, kjer se bodo shranjevale slike (grafi, histogrami, barploti)
dir.create('Evalvacija/results/part-izvajalec-slike', showWarnings = FALSE) # Slike za izvajalca
dir.create('Evalvacija/results/part-predmet-slike', showWarnings = FALSE) # Slike za predmet
# Opredelimo ID fakultete, ki skrbi za to da se v poročilu (kjer je dogovorjeno) izpiše kratice fakultete,
# ime fakultete ter izriše logo fakultete.
# (glej poročilo za izvajalca, ki ga generira R. skripta koda-izvajalec_predmet)
# ID skrbi tudi, da preberemo ustrezne CSV datoteke za ustrezno Fakulteto.
ID <- 3000023 # Ko se koda prenese na strežnik ID zakomentiramo, saj ga Peter ne Potrebuje
fakulteta <- ""
ime.fakultete <- ""
if (ID == 3000001) { # here
fakulteta <- "PEF" # Purpose: Read CSV file which has "PEF" in the end of the file.
studijska.praksa <- "Prakse PEF" # V primeru ko/če ima izvajalec študijsko prasko, se v izpisu za izvajalca ustvari poglavje: ŠTUDIJSKA PRAKSA, kjer se pri izrisu barplotov, namesto izpisa "Povprečje PEF", izpiše: "Prakse PEF"
ime.fakultete <- "Pedagoška fakulteta" # na prvi strani PDF poročila pod sliko
logo <- "logo_PEF" # na prvi strani PDF poročila doda usterzno sliko fakultete (logo uporabimo pri generiranju poročil glej koda-izvajalec_predmet.r)
} else if (ID == 3000004){
fakulteta <- "FU" # Purpose: Read CSV file which has "FU" in the end of the file.
studijska.praksa <- "Prakse FU"
ime.fakultete <- "Fakulteta za upravo"
logo <- "logo_FU" # Logoi se nahajajo : latexkosi/logo/
} else if (ID == 3000006){
fakulteta <- "FSD"
studijska.praksa <- "Prakse FSD"
ime.fakultete <- "Fakulteta za socialno delo"
logo <- "logo_FSD"
} else if (ID == 3000009){
fakulteta <- "FPP"
studijska.praksa <- "Prakse FPP"
ime.fakultete <- "Fakulteta za pomorstvo in promet"
logo <- "logo_FPP"
} else if (ID == 3000011){
fakulteta <- "ZF"
studijska.praksa <- "Prakse ZF"
ime.fakultete <- "Zdravstvena fakulteta"
logo <- "logo_ZF"
} else if (ID == 3000018){
fakulteta <- "FF"
studijska.praksa <- "Prakse FF"
ime.fakultete <- "Filozofska fakulteta"
logo <- "logo_FF"
} else if (ID == 3000019){
fakulteta <- "EF"
studijska.praksa <- "Prakse EF"
ime.fakultete <- "Ekonomska fakulteta"
logo <- "logo_EF"
} else if (ID == 3000020){
fakulteta <- "PF"
studijska.praksa <- "Prakse PF"
ime.fakultete <-"Pravna fakulteta"
logo <- "logo_PF"
} else if (ID == 3000021){
fakulteta <- "FDV"
studijska.praksa <- "Prakse FDV"
ime.fakultete <- "Fakulteta za družbene vede"
logo <- "logo_FDV"
} else if (ID == 3000022){
fakulteta <- "FSSS"
studijska.praksa <- "Prakse FSSS"
ime.fakultete <- "Fakulteta za šport"
logo <- "logo_FSSS"
} else if (ID == 3000023){
fakulteta <- "FS"
studijska.praksa <- "Prakse FSTR"
ime.fakultete <- "Fakulteta za strojništvo"
logo <- "logo_FSTR"
} else if (ID == 3000025){
fakulteta <- "FA"
studijska.praksa <- "Prakse FA"
ime.fakultete <- "Fakulteta za arhitekturo"
logo <- "logo_FA"
} else if (ID == 3000026){
fakulteta <- "FGG"
studijska.praksa <- "Prakse FGG"
ime.fakultete <- "Fakulteta za gradbeništvo in geodezijo"
logo <- "logo_FGG"
} else if (ID == 3000027){
fakulteta <- "FMF"
studijska.praksa <- "Prakse FMF"
ime.fakultete <- "Fakulteta za matematiko in fiziko"
logo <- "logo_FMF"
} else if (ID == 3000029){
fakulteta <- "NTF"
studijska.praksa <- "Prakse NTF"
ime.fakultete <- "Naravoslovnotehniška fakulteta"
logo <- "logo_NTF"
} else if (ID == 3000030){
fakulteta <- "FKKT"
studijska.praksa <- "Prakse FKKT"
ime.fakultete <- "Fakulteta za kemijo in kemijsko tehnologijo"
logo <- "logo_FKKT"
} else if (ID == 3000031){
fakulteta <- "FFA"
studijska.praksa <- "Prakse FFARM"
ime.fakultete <- "Fakulteta za farmacijo"
logo <- "logo_FFARM"
} else if (ID == 3000037){
fakulteta <- "VF"
studijska.praksa <- "Prakse VF"
ime.fakultete <- "Veterinarska fakulteta"
logo <- "logo_VF"
} else if (ID == 3000041){
fakulteta <- "MF"
studijska.praksa <- "Prakse MF"
ime.fakultete <- "Medicinska fakulteta"
logo <- "logo_MF"
} else if (ID == 3000042){
fakulteta <- "ALUO"
studijska.praksa <- "Prakse ALUO"
ime.fakultete <- "Akademija za likovno umetnost in oblikovanje"
logo <- "logo_ALU"
} else if (ID == 3000043){
fakulteta <- "AG"
studijska.praksa <- "Prakse AG"
ime.fakultete <- "Akademija za glasbo"
logo <- "logo_AG"
} else if (ID == 3000044){
fakulteta <- "AGRFT"
studijska.praksa <- "Prakse AGRFT"
ime.fakultete <- "Akademija za gledališče, radio, film in televizijo"
logo <- "logo_AGRFT"
} else if (ID == 3000050){
fakulteta <- "TEOF"
studijska.praksa <- "Prakse TEOF"
ime.fakultete <- "Teološka fakulteta"
logo <- "logo_TEOF"
} else if (ID == 3000063){
fakulteta <- "FRI"
studijska.praksa <- "Prakse FRI"
ime.fakultete <- "Fakulteta za računalništvo in informatiko"
logo <- "logo_FRI"
} else if (ID == 3000064){
fakulteta <- "FE"
studijska.praksa <- "Prakse FE"
ime.fakultete <- "Fakulteta za elektrotehniko"
logo <- "logo_FE"
} else if (ID == 3000071){
fakulteta <- "BF"
studijska.praksa <- "Prakse BF"
ime.fakultete <- "Biotehniška fakulteta"
logo <- "logo_BF"
} else {
fakulteta <- ""
studijska.praksa <- ""
ime.fakultete <- ""
}
## //Opredelimo ID// ##
## //Preberemo vhodne datoteke// ##
# Preberemo vhodne datoteke glede na ID, ki so ga opredelili ##
# V navodilih so opredeljene komponente in definirana imena vprašanj +
# ankete 1KA za izvajalca (npr. IZPOUC1) in za predmet (npr. IZPREDa)
# Vrstice predstavljajo komponente za izvajalca in za predmete.
# Definirana so tudi imena komponent, ki jih zapišemo v latex tabelah +
# (stolpec: ime.kratko) ter celotna imena komponent oz. anketnih vprašanj
# (glej stolpec: ime.dolgo)
# V navodilih so opredeljene spremenljivke, ki se nanašajo na spremenljivke v bazi (anketa pred in anketa po izpitu) ter
# dodana nova imena teh spremenljivk, ki smo jih generirali sami zaradi lažjega in hitrejšega pisanja nadalnje kode
# (klicanje teh spremenljivk, ki se računajo)
navodila <- openxlsx::read.xlsx(xlsxFile = "Evalvacija/temp/navodila.xlsx", colNames = TRUE, rowNames = TRUE) # Glej excel navodila!
#Podatki za: Anketa PRED izpitom
data_pred_izpitom <- read.csv2(paste0("Evalvacija/temp/anketa_pred_izp_", fakulteta, ".csv"), sep=";", header = T, fill = T, stringsAsFactors = FALSE)
if (data_pred_izpitom[1,1] == "Ustreznost") {data_pred_izpitom <- data_pred_izpitom[2:nrow(data_pred_izpitom), ]}
# Ker je v šifrantu šifra študenta z velikimi črkami, v csv datotekah (anketa PRED in PO) pa z malimi, to ustrezno preoblikujemo (da se ujema)
# large font
#data_pred_izpitom$sifstud <- toupper(data_pred_izpitom$sifstud)
# Umetno generiramo šifre študentov, zato da lahko navidezno zrdužimo podatke pred izpitom in po izpitu
#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# V letu 2017 je prišlo do spremembe v šifrantih, in sicer v obeh bazah odgovorov študentov
# 1KA (anketa pred izpitom in anketa PO izpitu) ne sem biti več ŠIFER ŠTUDENTOV, ki pa je v
# prejšnjih leti bila. Ker smo dve ločeni bazi (anketa pred in po izpitu)
# združevali na podlagi šifre študentov to več ni mogoče. Zato imamo dve rešitvi:
# 1) Celotno kodo preuredimo tako, da bomo podatke vlekli iz dveh različnih baz (data_pred_izpitom, data_po_izpitu)
# 2) Umetno geneiramo šifre študentov le zato, da bazi lahko združimo in ni potrebno preurejati kode na novo.
# Zaradi velikeha prihranka časa smo izbrali drugo možnost!!!!!!!!!!!
# Umetno generirani ID študentov so uporabljeni le zaradi združevanja baz, in se jih ne upošteva nikjer drugje (npr računanje povprečij)
# Združimo torej zato, da ni potrebno razbijati in na novo urejati cele kode
# Sami generiramo id študentov, ki se bodo začeli z A1 in končali z An (odbisno od števila vrstic)
data_pred_izpitom$sifstud <- sort(sample(paste0("A", seq(1:nrow(data_pred_izpitom))), replace = FALSE), decreasing = TRUE)
# Sortiramo po velikosti oz. A1, A2, A3,.....
data_pred_izpitom$sifstud <- data_pred_izpitom$sifstud[order(gsub("([A-Z]+)([0-9]+)", "\\1", data_pred_izpitom$sifstud),
as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", data_pred_izpitom$sifstud )))]
# Podatki za: Anketa PO izpitu
data_po_izpitu <- read.csv2(paste0("Evalvacija/temp/anketa_po_izpitu_", fakulteta, ".csv"), sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
if (data_po_izpitu[1,1]=="Ustreznost") {data_po_izpitu <- data_po_izpitu[2:nrow(data_po_izpitu), ]}
# large font
#data_po_izpitu$sifstud <- toupper(data_po_izpitu$sifstud)
# Enako naredimo še za anketo PO izpitu
data_po_izpitu$sifstud <- sort(sample(paste0("A", seq(1:nrow(data_po_izpitu))), replace = FALSE), decreasing = FALSE)
# Sortiramo po velikosti oz. A1, A2, A3,.....
data_po_izpitu$sifstud <- data_po_izpitu$sifstud [order(gsub("([A-Z]+)([0-9]+)", "\\1", data_po_izpitu$sifstud ),
as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", data_po_izpitu$sifstud)))]
# Šifrant X1
# my_data <- read.delim("FGG.txt", sep="#" , header=F, stringsAsFactors = FALSE)
# my_data <- my_data[,2:ncol(my_data)]
# colnames(my_data) <- c("IDP", "PREDMET", "IDPEDAGOGA", "NAZIV PEDAGOGA", "NACIN_STUDIJA",
# "SEMESTER_IZV", "ST_KT", "ST_STUD", "NOSILEC", "STOPNJA", "PRAKSA", "IZVEDBA")
#
# my_data["IZVEDBA"] <- NULL
# my_data["ST_STUD"] <- NULL
# my_data$IDP <- ifelse(my_data$NACIN_STUDIJA == 1, paste0(my_data$IDP,"_1"), paste0(my_data$IDP,"_2"))
#
# my_data$IDP <- as.character(my_data$IDP)
#
# sifrant <- read.csv2("sifrant_FGG.csv", sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
# sifrant["IZVEDBA"] <- NULL
#
# sifrantFDV <- merge(my_data, sifrant[c("IDP","IDPEDAGOGA","ST_STUD")], by = c("IDP","IDPEDAGOGA"), all = TRUE, sort = FALSE)
#
# sifrantFDV <- sifrantFDV[c("IDP", "PREDMET", "IDPEDAGOGA", "NAZIV PEDAGOGA", "NACIN_STUDIJA",
# "SEMESTER_IZV", "ST_KT", "ST_STUD", "STOPNJA", "NOSILEC", "PRAKSA")]
#
# sifrantFDV <- subset(sifrantFDV, !is.na(PREDMET))
#
#
# write.csv2(sifrantFDV, "sifrant_FGG.csv", row.names = FALSE)
sifrant <- read.csv2(paste0("Evalvacija/temp/sifrant_", fakulteta, ".csv"), sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
# 7.10.2017 nov sifrant X1, ki se bo uporabil za anlize.
# za anlize se ne sme uporabiti novega stevila studentov, ker ni realno -
# tako da lahko se uporabi posodobljene podatke za pedagoge, stevilo studentov pa staro,
# kot je bilo v prejsnjem sifrantu.
# Zato moramo število študentov novega šifranta združiti, a ker so lahko nekateri pedagogi v novem
# šufrantu dodani bo to pominlo da bodo imeli pri ŠT študenov vrednost NA. Zato v kolikor ima
St.stud.NA.<- list()
for (i in sifrant$IDP) {
St.stud.NA.[[i]] <- subset(sifrant, IDP==i)
if(any(duplicated(St.stud.NA.[[i]]$IDP))){
if(!all(is.na(St.stud.NA.[[i]]$ST_STUD))){
St.stud.NA.[[i]]$ST_STUD <- as.numeric(St.stud.NA.[[i]]$ST_STUD)
St.stud.NA.[[i]]$ST_STUD <- max(St.stud.NA.[[i]]$ST_STUD, na.rm=T)
}
}
}
sifrant <- do.call(rbind, lapply(St.stud.NA., data.frame, stringsAsFactors=FALSE))
# Šifrant X2
studenti <- read.csv2(paste0("Evalvacija/temp/studenti_", fakulteta, ".csv"), sep = ";", header = T, fill = T, stringsAsFactors = FALSE)
# // !!!!!!! // #
# Remove duplicated rows (remove diplucated students) from data frame študenti.
# Delamo samo takrat ko generiramo poročila za: Izvajalca, fakulteto in predmet!!
# Ko generiramo poročila za posamezne PROGRAME, KATEDRE tega ne uporabimo!
# Podvojeni študenti so zaradi nekaterih fakultet, kjer so dvopredmetni programi
# (npr. Filozofska fakulteta, Teološka fakulteta, itd.).
studenti <- studenti[!duplicated(studenti$ID_studenta_.MD5.), ]
# // !!!!!!! // #
# Šifrant X3
programi.imena <- read.csv2(paste0("Evalvacija/temp/programi_", fakulteta, ".csv"), fill = TRUE, sep = ";",header = T, stringsAsFactors = FALSE)
# Encoding(programi.imena$Naziv ) <- "UTF-8" # Če so pokvarjeni ČŽŠ-ji zaradi napačnega encodinga v šifrantih to ustrezno popravimo
# Ločimo univerzitetne in visokošolske programe z vrsto študija, ker so drugače podvojena imena (npr. Družboslovna informatika (uni))
programi.imena$Naziv <- paste0(programi.imena$Naziv, " (",programi.imena$Vrsta,")") # Imenu programa prilepimo vrsto študija (npr. uni ali vs)
## //Preberemo vhodne datoteke// ##
# Naložimo dodatna navodila, ki imajo več nalog: (glej skripto navodila_dodatno-UTF-8.r)
source('Evalvacija/R/navodila_dodatno-UTF-8.r')
#-------------------------- MOREBITNE NESKLADNOSTI Z 1KA BAZO IN ŠIFRANTOM X1 -----------------------------#
# Preverimo ali so v bazi kakšni odgovori tistih izvajalcev, ki manjkajo v šifrantu X1. Npr izvajalec ima
# v bazi (anketa PRED izpitom) odgovore za predmet, ki v šifrantu X1 ni naveden oz. manjka
# Slednje lahko pivede do erorjev pri generiranju PDF poročil in časovne zamude, kar želimo preprečiti
library(tidyverse)
# ANKETA PRED
podatki.1KA.baza.PRED <- data_pred_izpitom %>%
gather(contains("sifizv"),
key = "sifizv",
value = "ID"
) %>%
select_("predmet","sifpredm","ID") %>%
unique()
# Kateri izvajalci so v 1KA bazi (imajo odgovore) a niso v šifrantu X1
output.pred <- anti_join(podatki.1KA.baza.PRED, sifrant , by = c("sifpredm" ="IDP","ID"="IDPEDAGOGA"))
# Izločimo vse manjkajoče oz. nevsebinske vrednosti respondenta (-1, -2, -5, itd)
output.pred <- output.pred[! output.pred$ID %in% junk.komentar, ]
# PREVERI #
if (nrow(output.pred) >= 1) { # Če je output.pred < 1 to pomeni, da sta bazi 1KA odgovorov (anketa PRED) in šifrant X1 skladni zato lahko nadaljujemo z izračuni
cat("V bazi 1KA (anketa PRED izpitom) se nahaja izvajalec z ID-jem",paste(output.pred$ID, collapse = ' , '), "ki ga v šifrantu X1 ni!!!!!")
warning("Izvajalci ki so v 1KA bazi, manjkajo v šifrantu X1")
}
# PREVERI #
#------------------------- //MOREBITNE NESKLADNOSTI Z 1KA BAZO IN ŠIFRANTOM X1// ---------------------------#
#--------------------------------------- AGREGAT SUMARNIH PREDMETOV -----------------------------------------#
if (ID == 3000043){ # Če je ID == Fakulteta za Glasbo združimo določene predmete iz šifranta x7 v meta predmet
source('Evalvacija/R/metapredmeti.r')
}
#------------------------------------ //AGREGAT SUMARNIH PREDMETOV// ----------------------------------------#
# Urejanje
sifrant$PREDMET <- trim(sifrant$PREDMET) # remove extra spaces # trim funkcija je definirana v funkcije.r
sifrant$PREDMET <- sub("^\\.", "", sifrant$PREDMET) # remove dots in front of course names (FDV!)
sifrant$NAZIV.PEDAGOGA <- trim(sifrant$NAZIV.PEDAGOGA) # remove extra spaces
# preverba če ni kakšna šifra predmeta * šifra izvajalca v šifrantu podvojena
# npr. izvajalec je imel napačno šifro in dve izvedbi (redna/izredna) nista imeli različnih šifer
podvojeniID <- table(paste(sifrant$IDP, sifrant$IDPEDAGOGA, sep = '*'))
if (max(podvojeniID) > 1) {
sumljivci <- paste(names(podvojeniID[which(podvojeniID > 1)]), collapse = '\n')
warning("All course*lecturer ID's in sifrant should be unique!!\nThese are not:\n", sumljivci)
}
# V excel datoteki navodila poiščemo vzorec "izvajalec" in zajamemo vse vrstice,
# kjer se pojavlja. Enako naredimo še za predmet in študenta.
# saj gre za komponente, po katerih računamo povprečja, kvantile za izvajalce ali predmete.
# Kaj komponente? Glej excel datoteko navodila
navI <- navodila[grepl(pattern='izvajalec.*', rownames(navodila)), ]
navP <- navodila[grepl(pattern='predmet.*', rownames(navodila)), ]
navS <- navodila[grepl(pattern='student.*', rownames(navodila)), ]
lokacije.izvajalci <- navI[, grepl(pattern='izvajalec.\\d', colnames(navodila))]
lokacije.predmet <- navP[, 'lokacije.predmet', drop = FALSE] # drop = False, ker želimo ohraniti podatkovni okvir
lokacije.student <- navS[, 'lokacije.student', drop = FALSE]
## ZDRUŽEVANJE SPREMENLJIVK V VARS.IZVAJALEC in VARS.PREDMET ##
# Spremenljivke oz komponente po katerih računamo posamezna povprečja bi se dalo tudi neposredno računati z
# navajanjem imen posameznih sprmenljivk v bazih anketa pred in anketa po izpitu. Npr namesto izvajalec ocena kakovost
# bi generirali vector s spremenljivko IZMNE1a. Ta spremenljivka je tako poimenovana v bazi.
# Združimo spremenljivke oz komponente za izvajalca v EXCEL DATOTEKI NAVODILA #
# Združimo zato, da ni potrebno navajati (npr. računanje) imen posameznih spremenljivk, ki se nahajajo v anketi pred in po.
# Komponente, ki se bodo računale oz. stolpce združimo v list, katerega nato kličemo pri računanju in pri generiranju tabel
vars.izvajalec <- list(
cont = list(vars = rownames(navI)[navI$tip == 'CONT' & !is.na(navI$tip)]), # "CONT" pomeni, da gre za zaprto vprašanje
text = list(vars = rownames(navI)[navI$tip == 'TEXT' & !is.na(navI$tip)])) # "TEXT" pomeni, da gre za odprto vprašanje (glej npr 26 vrstico v excel datoteki navodila)
vars.izvajalec$cont$ime.kratko[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'ime.kratko'] # ime.kratko (glej navodila) in tabele pri poročilu izvajalca. Npr ime.kratko se pojavlja v Tabeli 1.1: Poročilo izvajalca
vars.izvajalec$text$ime.kratko[vars.izvajalec$text$vars] <- navI[vars.izvajalec$text$vars, 'ime.kratko']
vars.izvajalec$cont$ime.dolgo[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'ime.dolgo'] # Celoten tekst zaprtih vprašanj za tabele (glej izpis izvajalca)
vars.izvajalec$text$ime.dolgo[vars.izvajalec$text$vars] <- navI[vars.izvajalec$text$vars, 'ime.dolgo'] # Celoten tekst odprtih vprašanj za tabele (glej izpis izvajalca)
vars.izvajalec$cont$pobarvanka[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'pobarvanka'] # V excel datoteki opredelimo
# meje barvanja za posamezno komponento (glej stolpec pobarvanka).
# Te meje potem zapišemo v funkcijo s katero barvamo povprečja (glej skripto funkcije.r)
vars.izvajalec$cont$decimalke[vars.izvajalec$cont$vars] <- navI[vars.izvajalec$cont$vars, 'decimalke.tabele'] # zaokroževanje obarvanih vrednosti na 1 decimalko (glej funkcije.r)
# Združimo spremenljivke oz komponente za PREDMETE (PRED IN PO) v EXCEL DATOTEKI navodila#
# Stolpce oz spremenljivke, ki se računajo združimo v list
vars.predmet <- list(
cont=list(vars=c(rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRED"], # Komponente PRED izpitom
rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PO"], # Komponente PO izpitu
rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRAKSA"])), # Komponente, ki vsebujejo oceno za študijsko prakso
text=list(vars=rownames(navP)[navP$tip == 'TEXT' & !is.na(navP$tip)]),
krediti=list(vars=rownames(navP["predmet.ocena.krediti", ])),
kompetence1=list(vars=rownames(navP["predmet.ocena.kompetence1", ])))
# Ločimo kompponente po katerih računamo povprečja za predmete,
# in sicer komponente PRED IZPITOM, komponente PO IZPITU IN komponente za študijsko PRAKSO (zaradi računanja vrednosti in izpisa poročil)
vars.predmet$cont$pred <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRED"]
vars.predmet$cont$po <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PO"]
vars.predmet$cont$praksa <- rownames(navP)[navP$tip == 'CONT' & !is.na(navP$tip) & navP$cont.pred.po.izpitu == "PRAKSA"]
vars.predmet$cont$ime.kratko[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'ime.kratko']
vars.predmet$text$ime.kratko[vars.predmet$text$vars] <- navP[vars.predmet$text$vars, 'ime.kratko']
vars.predmet$krediti$ime.kratko[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'ime.kratko']
vars.predmet$kompetence1$ime.kratko[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'ime.kratko']
vars.predmet$cont$ime.dolgo[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'ime.dolgo']
vars.predmet$text$ime.dolgo[vars.predmet$text$vars] <- navP[vars.predmet$text$vars, 'ime.dolgo']
vars.predmet$krediti$ime.dolgo[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'ime.dolgo']
vars.predmet$kompetence1$ime.dolgo[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'ime.dolgo']
# Labele za komponenti Porabljeno število ur in za kompetence (glej poročilo za izvajalca, poglavje: Število porabljenih ur (anketa PO izpitu))
# Labele: "1 - Veliko manj" "2 - Nekoliko manj" "3 - Predvideno" "4 - Nekoliko več" "5 - Veliko več"
vars.predmet$krediti$labele[vars.predmet$krediti$vars] <- strsplit(navP["predmet.ocena.krediti","labele"], split = ",")
vars.predmet$kompetence1$labele[vars.predmet$kompetence1$vars] <- strsplit(navP["predmet.ocena.kompetence1","labele"], split = ",")
# we don't use whole wording for graph labels
# Labele (graf) za komponento "Ustreznost KT" oz Število porabljenih ur (anketa PO izpitu) <- glej poročilo za izvajalca slika:
# Frekvenčna porazdelitev za število porabljenih ur (anketa PO izpitu)
vars.predmet$krediti$labele.graf <- vars.predmet$krediti$labele[vars.predmet$krediti$vars]
vars.predmet$krediti$labele.graf[[vars.predmet$krediti$vars]][c(2,4)] <- c("2", "4")
# Labele za komponento "kompetence" <-glej poročilo za izvajalca
vars.predmet$kompetence1$labele.graf <- vars.predmet$kompetence1$labele[vars.predmet$kompetence1$vars]
vars.predmet$kompetence1$labele.graf[[vars.predmet$kompetence1$vars]][c(2,4)] <- c("2", "4")
# "3,4,Inf,Inf" So meje barvanja, ki smo jih določili v excel datoteki navodila, in sicer stolpec "pobarvanka"
# za 3,4,Inf,Inf -> manj kot 3 je bold redeče, 3 ali več in manj kot 4 je samo rdeče, Inf, Inf pomeni da ni zgornje meje za barvanja.
# Katera barva pripada posamezni vrednosti v tabelah definiramo v skripti funkcije.r
vars.predmet$cont$pobarvanka[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'pobarvanka']
vars.predmet$krediti$pobarvanka[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'pobarvanka']
vars.predmet$kompetence1$pobarvanka[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'pobarvanka']
# Vse vrednosti bodo v tabelah zaokrožene na eno decimalno mesto. Temu služi stolpec "decimalke.tabele" v excel datoteki navodila
vars.predmet$cont$decimalke[vars.predmet$cont$vars] <- navP[vars.predmet$cont$vars, 'decimalke.tabele']
vars.predmet$krediti$decimalke[vars.predmet$krediti$vars] <- navP[vars.predmet$krediti$vars, 'decimalke.tabele']
vars.predmet$kompetence1$decimalke[vars.predmet$kompetence1$vars] <- navP[vars.predmet$kompetence1$vars, 'decimalke.tabele']
####################
# Kot smo že omenili želimo združiti bazi, kar naredimo na podlagi šifer predmetov in šifer študentov, ki smo
# jih za leto 2016/2017 simulirali.
# merging data from before and after exam databases - each student must have only 1 row for each course
data <- merge(data_pred_izpitom, data_po_izpitu, by = c(navodila["student.sifra","lokacije.student"],
navodila["predmet.sifra","lokacije.predmet"]), all = TRUE)
#######################################################################################
# premetavanje
#######################################################################################
######################
# PODATKI ZA IZVAJALCE (premetavanje po anketah -> po izvajalcih)
#####################
# Število izvajalcev v bazi
lokacije.izvajalci.names <- names(data)[grepl( "izvajalec." , names(data))]
lokacije.izvajalci <- lokacije.izvajalci[,1:length(lokacije.izvajalci.names)]
data.izvajalci <- NULL
for (i in names(lokacije.izvajalci)){ # lokacije.izvajalci in lokacije.predmet <- v excel datoteki Navodila
data.temp <- data[c(lokacije.predmet[, 1], as.vector(lokacije.izvajalci[[i]]),"idprog.x","letnik.x","program.x","lurker.x")] # spremenljivke ki smo jih določili glede na predavatelje v csv uvoženi tabeli
names(data.temp) <- c(rownames(lokacije.predmet), rownames(lokacije.izvajalci), "ID_vrsta_studija","Letnik","Naziv","lurker")
data.temp <- subset(data.temp, izvajalec.sifra > 0) # samo kjer je naveden izvajalec
if (is.null(data.izvajalci)) {
data.izvajalci <- data.temp
} else {
data.izvajalci <- rbind(data.izvajalci,data.temp)
}
}
# Izločimo vse manjkajoče vrednosti
# setting missing values and keeping some (defined in navodila.xlsx in column missing.table) for frequency tables
someMissVars <- rownames(navodila[!is.na(navodila$missings.table), ])
data.izvajalci.someMiss <- data.izvajalci[c("predmet.sifra","izvajalec.sifra",someMissVars)]
for (var in c(vars.predmet$cont$vars,vars.predmet$text$vars,vars.predmet$krediti$vars,
vars.predmet$kompetence1$vars,vars.izvajalec$cont$vars,vars.izvajalec$text$vars)) {
miss <- unlist(strsplit(navodila[var,]$missings, ","))
data.izvajalci[, var][data.izvajalci[, var] %in% miss] <- NA
if (var %in% c(vars.predmet$cont$vars,vars.predmet$krediti$vars,
vars.predmet$kompetence1$vars,vars.izvajalec$cont$vars)) {
data.izvajalci[, var] <- as.numeric(data.izvajalci[, var])
}
if (var %in% someMissVars) {
someMissVals <- matrix(unlist(strsplit(unlist(strsplit(navodila[var,]$missings.table, ",")), "=")), ncol = 2, byrow = TRUE)
miss <- miss[!(miss %in% someMissVals[, 1])]
data.izvajalci.someMiss[, var][data.izvajalci.someMiss[, var] %in% miss] <- NA
for (missVar in 1:nrow(someMissVals)) {
data.izvajalci.someMiss[, var][data.izvajalci.someMiss[, var] == someMissVals[missVar,1] &
!is.na(data.izvajalci.someMiss[, var])] <- someMissVals[missVar,2]
}
}
}
# all values with some miss for tables
# Glej tabelo Povprečja in deleži kategorij odgovorov za komponente pedagoškega dela izvajalca pri predmetu (anketa PRED izpitom)"
izvajalec.someMiss <- sort(unique(as.vector(as.matrix(data.izvajalci.someMiss[,vars.izvajalec$cont$vars]))))
# Check if values are missing. We need column_name for table making
# V poročilu za izvajalca glej podpoglavje: Frekvenčna porazdelitev ocen komponent pedagoškega dela izvajalca
# V primeru, da kakšna vrednost manjka jo ustvarimo, sicer ko poženemo koda-izvajalec_predmet ne generira tabel
column_name <- c("1","2","3","4","5","Ne želim odgovoriti","Nimam dovolj informacij")
if (length(which(izvajalec.someMiss %in% column_name)) < 7) {
# Če so kakšne manjkajoče vrednosti, ki se dodajajo v tabele kot imena stolpcev za izvajalca
Missing <- setdiff(column_name, izvajalec.someMiss) # Find names of missing columns
izvajalec.someMiss <- c(Missing,izvajalec.someMiss)
izvajalec.someMiss <- sort(izvajalec.someMiss)
}
# //column_name// #
data.izvajalci <- data.izvajalci[order(data.izvajalci$izvajalec.sifra, data.izvajalci$predmet.sifra), ]
# Število vseh odgovorov. To so odgovori na predmet in izvajalca
# '-1' neodgovorjeno vprašanje, '-2' preskok zaradi pogoja (IF)
data.izvajalci$veljavna.vsiodgovori <- data.izvajalci$predmet.izpolnjeval.pred == -1 & (data.izvajalci$izvajalec.jepouceval == 1 | data.izvajalci$izvajalec.jepouceval == 2 | data.izvajalci$izvajalec.jepouceval == -2)
# Število odgovorov izvajalca
# ali je anketa veljavna za izvajalca; ali je student ni izpolnjeval (je pa začel anketo)
data.izvajalci$veljavna <- data.izvajalci$predmet.izpolnjeval.pred == -1 & (data.izvajalci$izvajalec.jepouceval == 1 | data.izvajalci$izvajalec.jepouceval == -2)
data.izvajalci$zavrnjena <- (!data.izvajalci$veljavna & !is.na(data.izvajalci$predmet.izpolnjeval.pred) & !is.na(data.izvajalci$izvajalec.jepouceval) & !(data.izvajalci$izvajalec.jepouceval == 2))
data.izvajalci$nipouceval <- data.izvajalci$izvajalec.jepouceval == 2 # Če je študent v anketi pred izpitom odgovoril, da ga izvajalec pri tem predmetu ni poučeval
# adding student data (year and programme)
data.izvajalci <- merge(data.izvajalci, programi.imena[,c("ID", "Naziv")], by.x = "ID_vrsta_studija", by.y = "ID", all.x = TRUE, sort = FALSE)
names(data.izvajalci)[match(c("ID_vrsta_studija","Letnik","Naziv.y"), names(data.izvajalci))] <- c("student.program.sifra","student.letnik","student.program.ime")
# if (ID == "3000025") {
# sifre <- c("317_1","317_2","326_1","337_1","436_1","472_1","335_1","345_1","354_1")
#
# r <- with(data.izvajalci, which(data.izvajalci$predmet.sifra %in% sifre & data.izvajalci$izvajalec.jepouceval !="1"), arr.ind=TRUE)
#
# newd <- data.izvajalci[-r, ]
#
# data.izvajalci <- newd
# }
#####################
# PODATKI ZA PREDMETE
#####################
data.predmeti <- data[c(lokacije.predmet[, 1], lokacije.student[, 1],"idprog.x","letnik.x","program.x", "lurker.x")] # Združimo spremenljivke v lokacije.predmet[, 1] in šifro študentov
names(data.predmeti) <- c(rownames(lokacije.predmet), rownames(lokacije.student),"ID_vrsta_studija","Letnik","Naziv","lurker")
someMissVars <- rownames(navP[!is.na(navP$missings.table), ])
data.predmeti.someMiss <- data.predmeti[c("predmet.sifra", someMissVars)]
# setting missing values and keeping some (defined in navodila.xlsx in column missing.table) for frequency tables
for (var in c(vars.predmet$cont$vars,vars.predmet$text$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)) {
miss <- unlist(strsplit(navodila[var,]$missings, ","))
data.predmeti[, var][data.predmeti[, var] %in% miss] <- NA
if (var %in% c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)) {
data.predmeti[, var] <- as.numeric(data.predmeti[, var])
}
if (var %in% someMissVars) {
someMissVals <- matrix(unlist(strsplit(unlist(strsplit(navodila[var,]$missings.table, ",")), "=")), ncol = 2, byrow = TRUE)
miss <- miss[!(miss %in% someMissVals[, 1])]
data.predmeti.someMiss[, var][data.predmeti.someMiss[, var] %in% miss] <- NA
for (missVar in 1:nrow(someMissVals)) {
data.predmeti.someMiss[, var][data.predmeti.someMiss[, var] == someMissVals[missVar, 1] &
!is.na(data.predmeti.someMiss[, var])] <- someMissVals[missVar, 2]
}
}
}
# all values with some miss for tables
predmet.someMiss <- sort(unique(as.vector(as.matrix(data.predmeti.someMiss[, vars.predmet$cont$vars]))))
if(any(predmet.someMiss=="")) {
predmet.someMiss <- predmet.someMiss[predmet.someMiss != ""]
}
# data.predmeti$predmet.sifra <- as.numeric(data.predmeti$predmet.sifra)
data.predmeti <- data.predmeti[order(data.predmeti$predmet.sifra),]
# ali je anketa veljavna za predmet; ali je student ni izpolnjeval (je pa začel anketo)
# '-1' neodgovorjeno vprašanje
data.predmeti$veljavna <- data.predmeti$predmet.izpolnjeval.pred == -1 & !is.na(data.predmeti$predmet.izpolnjeval.pred)
data.predmeti$veljavna_po_izpitu <- data.predmeti$predmet.izpolnjeval.po == -1 & !is.na(data.predmeti$predmet.izpolnjeval.po)
data.predmeti$zavrnjena <- (!data.predmeti$veljavna & !is.na(data.predmeti$predmet.izpolnjeval.pred))
data.predmeti$zavrnjena_po_izpitu <- (!data.predmeti$veljavna_po_izpitu & !is.na(data.predmeti$predmet.izpolnjeval.po))
# adding student data (year and programme)
data.predmeti <- merge(data.predmeti, programi.imena[,c("ID", "Naziv")], by.x="ID_vrsta_studija", by.y="ID", all.x=TRUE, sort=FALSE)
names(data.predmeti)[match(c("ID_vrsta_studija","Letnik","Naziv.y"), names(data.predmeti))] <- c("student.program.sifra","student.letnik","student.program.ime")
# ali so v bazi kakšni predmeti ki jih ni v šifrantu
test2 <- unique(data.predmeti$predmet.sifra)[!(unique(data.predmeti$predmet.sifra) %in% unique(sifrant$IDP))]
if (length(test2) > 0) {
test2 <- paste(test2, collapse='\n')
warning('V šifrantu ni predmetov, ki pa so v bazi:\n', test2)
}
# zapis obeh baz na katerih se dela naprej
#write.csv2(data.izvajalci, paste0("results/data.izvajalci_", fakulteta, ".csv"))
# #write.csv2(data.predmeti, paste0("results/data.predmeti_", fakulteta, ".csv"))
# Če je output.pred > 1 to pomeni, da sta bazi 1KA odgovorov (anketa PRED) in šifrant X1 neskladni
if (nrow(output.pred) > 0) {
# data.izvajalci <- data.izvajalci[!(data.izvajalci$predmet.sifra %in% output.pred$sifpredm &
# data.izvajalci$izvajalec.sifra %in% output.pred$ID), ]
data.izvajalci <- data.izvajalci[! paste(data.izvajalci$predmet.sifra, data.izvajalci$izvajalec.sifra) %in%
paste(output.pred$sifpredm, output.pred$ID), ]
}
#######################################################################################
# izračuni opisnih statistik
#######################################################################################
###############
## IZVAJALCI ##
###############
# povprečja
izvMean <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = mean, na.rm = TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# mediane
izvMedian <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = median, na.rm = TRUE)
colnames(izvMedian)[3:ncol(izvMedian)] <- paste0(vars.izvajalec$cont$vars,"_median")
# sd
izvSd <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sd, na.rm = TRUE)
colnames(izvSd)[3:ncol(izvSd)] <- paste0(vars.izvajalec$cont$vars,"_sd")
# min
izvMin <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = min, na.rm = TRUE)
colnames(izvMin)[3:ncol(izvMin)] <- paste0(vars.izvajalec$cont$vars,"_min")
izvMin[izvMin==Inf] <- NA
# max
izvMax <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = max, na.rm = TRUE)
colnames(izvMax)[3:ncol(izvMax)] <- paste0(vars.izvajalec$cont$vars,"_max")
izvMax[izvMax==-Inf] <- NA
# N posamezne spremenljivke
izvN <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.izvajalci$veljavna,by=data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# N vseh odgovorov
izvNanketvsiodgovori <- aggregate(data.izvajalci$veljavna.vsiodgovori,by=data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanketvsiodgovori)[3] <- "N_anketSkupaj"
# N zavrnjenih anket
izvNzavrnjenih <- aggregate(data.izvajalci$zavrnjena,by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNzavrnjenih)[3] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
data.izvajalci$lurker[data.izvajalci$lurker==0] <- NA
izvNLurkerji <- aggregate(as.numeric(data.izvajalci$lurker), by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")],FUN=function(x) sum(!is.na(x)))
colnames(izvNLurkerji)[3] <- "N_lurkerjev_ivz"
# N anket: Izvajalec ni poučeval
izvNipouceval <- aggregate(data.izvajalci$nipouceval,by=data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNipouceval)[3] <- "Ni_pouceval"
# Prvi kvartil Q1
izvQ1 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = quantile, probs = c(0.25),na.rm=T)
colnames(izvQ1)[3:ncol(izvQ1)] <- paste0(vars.izvajalec$cont$vars,"_Q1")
# Tretji kvartil
izvQ3 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = quantile, probs = c(0.75),na.rm=T)
colnames(izvQ3)[3:ncol(izvQ3)] <- paste0(vars.izvajalec$cont$vars,"_Q3")
# Prvi decil
izvD1 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = quantile, probs = c(0.1), type=5,na.rm=T)
colnames(izvD1)[3:ncol(izvD1)] <- paste0(vars.izvajalec$cont$vars,"_D1")
# Deveti decil
izvD9 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("predmet.sifra","izvajalec.sifra")], FUN = quantile, probs = c(0.9), type=5,na.rm=T)
colnames(izvD9)[3:ncol(izvD9)] <- paste0(vars.izvajalec$cont$vars,"_D9")
# Zdužimo opisne statistike izvajalcev
povprecja.izvajalci <- merge(izvMean, izvSd, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvMin,by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvMax, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvN, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvNanket, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvNanketvsiodgovori, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvNzavrnjenih, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvNipouceval, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvQ1, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvQ3, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvMedian , by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvD1, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvD9, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci <- merge(povprecja.izvajalci, izvNLurkerji, by = c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
# združit s šifrantom
povprecja.izvajalci <- merge(povprecja.izvajalci, sifrant,
by.x = c("izvajalec.sifra", "predmet.sifra"),
by.y = c("IDPEDAGOGA", "IDP"), all.x = TRUE, sort = FALSE)
# write.csv2(povprecja.izvajalci, paste0("results/povprecja.izvajalci_", fakulteta, ".csv"))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_sd")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_min")][premalo] <- NA
povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_max")][premalo] <- NA
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.izvajalci$ST_STUD <- ifelse(povprecja.izvajalci$ST_STUD < as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),
as.numeric(povprecja.izvajalci$N_anket) + as.numeric(povprecja.izvajalci$N_zavrnjenih),povprecja.izvajalci$ST_STUD)
# povprečje vseh komponent izvajalca
povprecja.izvajalci$izvajalec.ocena.SKUPAJ <- rowMeans(povprecja.izvajalci[paste0(vars.izvajalec$cont$vars,"_mean")], na.rm = T)
# % sodelujocih
povprecja.izvajalci$sodelujocih.pct <- povprecja.izvajalci$N_anket / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % zavrnjenih
povprecja.izvajalci$zavrnjenih.pct <- povprecja.izvajalci$N_zavrnjenih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
# % Ni pouceval
povprecja.izvajalci$nipouceval.pct <- povprecja.izvajalci$Ni_pouceval / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## N in % neodzivnih
#intersect(as, povprecja.izvajalci$ST_STUD)
povprecja.izvajalci$N_neodzivnih <- as.numeric(povprecja.izvajalci$ST_STUD) - povprecja.izvajalci$N_anketSkupaj - povprecja.izvajalci$N_zavrnjenih
povprecja.izvajalci$neodzivnih.pct <- povprecja.izvajalci$N_neodzivnih / as.numeric(povprecja.izvajalci$ST_STUD) * 100
## //IZVAJALCI// ##
##############
## PREDMETI ##
##############
# povprečja
predMean <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# Mediane
predMedian <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti["predmet.sifra"], FUN = median, na.rm = TRUE)
colnames(predMedian)[2:ncol(predMedian)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_median")
# sd
predSd <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti["predmet.sifra"], FUN = sd, na.rm = TRUE)
colnames(predSd)[2:ncol(predSd)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_sd")
# min
predMin <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars)], by = data.predmeti["predmet.sifra"], FUN = min, na.rm = TRUE)
colnames(predMin)[2:ncol(predMin)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars),"_min")
predMin[predMin==Inf] <- NA
# max
predMax <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars)], by = data.predmeti["predmet.sifra"], FUN = max, na.rm = TRUE)
colnames(predMax)[2:ncol(predMax)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars),"_max")
predMax[predMax==-Inf] <- NA
# N posamezne spremenljivke
predN <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.predmeti$veljavna, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.predmeti$veljavna_po_izpitu, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
# N didn't want to answer before and after exam
predNzavrnjenih <- aggregate(data.predmeti$zavrnjena, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih)[2] <- "N_zavrnjenih"
# N Lurkerjev PRED izpitom
data.predmeti$lurker[data.predmeti$lurker==0] <- NA
predNLurkerji <- aggregate(as.numeric(data.predmeti$lurker), by = data.predmeti["predmet.sifra"],FUN=function(x) sum(!is.na(x)))
colnames(predNLurkerji)[2] <- "N_lurkerjev_pred"
predNzavrnjenih_po_izpitu <- aggregate(data.predmeti$zavrnjena_po_izpitu, by = data.predmeti["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih_po_izpitu)[2] <- "N_zavrnjenih_po_izpitu"
# razporejanje ocen za kreditne točke (n & %) # Ustreznost KT
krediti_razporejanje_n <- table(data.predmeti$predmet.sifra, data.predmeti$predmet.ocena.krediti)
krediti_razporejanje_pct <- prop.table(krediti_razporejanje_n, 1) * 100
if (!is.null(dimnames(krediti_razporejanje_n)[[2]])) {
colnames(krediti_razporejanje_n) <- paste0("krediti_razporejanje_n_", colnames(krediti_razporejanje_n))
colnames(krediti_razporejanje_pct) <- paste0("krediti_razporejanje_pct_", colnames(krediti_razporejanje_pct))
krediti_razporejanje_n <- cbind(as.data.frame.matrix(krediti_razporejanje_n), predmet.sifra=rownames(krediti_razporejanje_n))
krediti_razporejanje_pct <- cbind(as.data.frame.matrix(krediti_razporejanje_pct), predmet.sifra=rownames(krediti_razporejanje_pct))
} else {krediti_razporejanje_n <- NULL
krediti_razporejanje_pct <- NULL}
# razporejanje ocen za kompetence1 (n & %)
kompetence1_razporejanje_n <- table(data.predmeti$predmet.sifra, data.predmeti$predmet.ocena.kompetence1)
kompetence1_razporejanje_pct <- prop.table(kompetence1_razporejanje_n, 1) * 100
if (!is.null(dimnames(kompetence1_razporejanje_n)[[2]])) {
colnames(kompetence1_razporejanje_n) <- paste0("kompetence1_razporejanje_n_", colnames(kompetence1_razporejanje_n))
colnames(kompetence1_razporejanje_pct) <- paste0("kompetence1_razporejanje_pct_", colnames(kompetence1_razporejanje_pct))
kompetence1_razporejanje_n <- cbind(as.data.frame.matrix(kompetence1_razporejanje_n), predmet.sifra=rownames(kompetence1_razporejanje_n))
kompetence1_razporejanje_pct <- cbind(as.data.frame.matrix(kompetence1_razporejanje_pct), predmet.sifra=rownames(kompetence1_razporejanje_pct))
} else {kompetence1_razporejanje_n <- NULL
kompetence1_razporejanje_pct <- NULL}
# Prvi kvartil
predQ1 <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti["predmet.sifra"], FUN = quantile, probs = c(0.25),na.rm=T)
colnames(predQ1)[2:ncol(predQ1)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_Q1")
# Tretji kvartil
predQ3 <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti["predmet.sifra"], FUN = quantile, probs = c(0.75),na.rm=T)
colnames(predQ3)[2:ncol(predQ3)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_Q3")
# Prvi decil
predD1 <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti["predmet.sifra"], FUN = quantile, probs = c(0.1), type=5,na.rm=T)
colnames(predD1)[2:ncol(predD1)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_D1")
# Deveti decil
predD9 <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti["predmet.sifra"], FUN = quantile, probs = c(0.9), type=5,na.rm=T)
colnames(predD9)[2:ncol(predD9)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_D9")
# Združimo izračunane statistike za predmete
povprecja.predmeti <- merge(predMean, predSd, by="predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predMin, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predMax, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predQ1, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predQ3, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predMedian, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predD1, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predD9, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predNLurkerji, by = "predmet.sifra", all = TRUE, sort = FALSE)
# Če spremenljivka krediti_razporejanje_n ni NULL, jo združimo v popvrecja.predmeti sicer ne.
if (!is.null(krediti_razporejanje_n)) {
povprecja.predmeti <- merge(povprecja.predmeti, krediti_razporejanje_n, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, krediti_razporejanje_pct, by = "predmet.sifra", all = TRUE, sort = FALSE)
}
if (!is.null(kompetence1_razporejanje_n)) {
povprecja.predmeti <- merge(povprecja.predmeti, kompetence1_razporejanje_n, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, kompetence1_razporejanje_pct, by = "predmet.sifra", all = TRUE, sort = FALSE)
}
povprecja.predmeti <- merge(povprecja.predmeti, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predNanket_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predNzavrnjenih, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti <- merge(povprecja.predmeti, predNzavrnjenih_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
# združit s šifrantom
povprecja.predmeti <- merge(povprecja.predmeti, unique(sifrant[!(colnames(sifrant) %in% c("IDPEDAGOGA", "NAZIV.PEDAGOGA", "ST_KT", "ST_UR", "NOSILEC"))]),
by.x = "predmet.sifra", by.y = "IDP", all.x = TRUE, sort = FALSE)
# write.csv2(povprecja.predmeti, paste0("results/povprecja.predmeti_", fakulteta, ".csv"))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- povprecja.predmeti[paste0(vars.predmet$cont$vars,"_N")] < minEnot
povprecja.predmeti[paste0(vars.predmet$cont$vars,"_mean")][premalo] <- NA
povprecja.predmeti[paste0(vars.predmet$cont$vars,"_sd")][premalo] <- NA
povprecja.predmeti[paste0(vars.predmet$cont$vars,"_min")][premalo] <- NA
povprecja.predmeti[paste0(vars.predmet$cont$vars,"_max")][premalo] <- NA
# še za kredite
premalo <- povprecja.predmeti[paste0("predmet.ocena.krediti_N")] < minEnot
povprecja.predmeti["predmet.ocena.krediti_mean"][premalo] <- NA
# Če so manjkajoče vrednosti (1:5) in eden izmed stolpcev od 1:5 manjka, poglej kateri manjka ga definiraj in mu pripiši vrednost 0.
# Manjkajoče vrednosti nastanejo, ker gre za vprašanje na lestvici od 1:5, in npr. vrednost 1 ni označil nihče
# Definirane stolpce od 1:5 potrebujemo pri poročilu za izvajalca, in sicer pri generiranju tabel: poročilo za izvajalca
# Glej npr tabelo: Frekvenčna porazdelitev za število porabljenih ur* (anketa PO izpitu)
if (any(paste0("krediti_razporejanje_n_", 1:5) %in% colnames(povprecja.predmeti)==FALSE)) {
# povprecja.predmeti = data.frame
missing <- paste0("krediti_razporejanje_n_",1:5)[paste0("krediti_razporejanje_n_", 1:5) %in% colnames(povprecja.predmeti) == FALSE]
res <- list()
for(i in missing){
povprecja.predmeti[[i]] <- rep(0, nrow(povprecja.predmeti))
}
}
# Če je število odogovorov manjše od 4, mu pripišemo NA
povprecja.predmeti[paste0("krediti_razporejanje_n_", 1:5)][cbind(premalo,premalo,premalo,premalo,premalo)] <- NA
# Če so manjkajoče vrednosti in eden izmed stolpcev od 1:5 manjka, poglej kateri manjka in ga definiraj
if (any(paste0("krediti_razporejanje_pct_", 1:5) %in% colnames(povprecja.predmeti)==FALSE)) {
# x = data.frame
missing <- paste0("krediti_razporejanje_pct_",1:5)[paste0("krediti_razporejanje_pct_", 1:5) %in% colnames(povprecja.predmeti) == FALSE]
res <- list()
for(i in missing){
povprecja.predmeti[[i]] <- rep(0,nrow(povprecja.predmeti))
}
}
povprecja.predmeti[paste0("krediti_razporejanje_pct_", 1:5)][cbind(premalo,premalo,premalo,premalo,premalo)] <- NA
# In za kompetence
premalo <- povprecja.predmeti[paste0("predmet.ocena.kompetence1_N")] < minEnot
povprecja.predmeti["predmet.ocena.kompetence1_mean"][premalo] <- NA
if (any(paste0("kompetence1_razporejanje_n_", 1:5) %in% colnames(povprecja.predmeti)==FALSE)) {
# x = data.frame
missing <- paste0("kompetence1_razporejanje_n_",1:5)[paste0("kompetence1_razporejanje_n_", 1:5) %in% colnames(povprecja.predmeti) == FALSE]
res <- list()
for(i in missing){
povprecja.predmeti[[i]] <- rep(0,nrow(povprecja.predmeti))
}
}
povprecja.predmeti[paste0("kompetence1_razporejanje_n_", 1:5)][cbind(premalo,premalo,premalo,premalo,premalo)] <- NA
# Če so manjkajoče vrednosti in eden izmed stolpcev od 1:5 manjka, poglej kateri manjka in ga definiraj
if (any(paste0("kompetence1_razporejanje_pct_", 1:5) %in% colnames(povprecja.predmeti)==FALSE)) {
# x = data.frame
missing <- paste0("kompetence1_razporejanje_pct_",1:5)[paste0("kompetence1_razporejanje_pct_", 1:5) %in% colnames(povprecja.predmeti) == FALSE]
res <- list()
for(i in missing){
povprecja.predmeti[[i]] <- rep(0,nrow(povprecja.predmeti))
}
}
povprecja.predmeti[paste0("kompetence1_razporejanje_pct_", 1:5)][cbind(premalo,premalo,premalo,premalo,premalo)] <- NA
# average of components - all, before, after exam
povprecja.predmeti$predmet.ocena.SKUPAJ <- rowMeans(povprecja.predmeti[paste0(vars.predmet$cont$vars,"_mean")], na.rm = T)
povprecja.predmeti$predmet.ocena.SKUPAJ.pred <- rowMeans(povprecja.predmeti[paste0(vars.predmet$cont$pred,"_mean")], na.rm = T)
# Ker je v NAKETI PO IPZITU komponenta "kompetence" merjena na drugačni lestvici od komponent:Vsebine, Naloge, Ocenjevanje, je ne upoštevamo
# Pri izračunu skupnega povprečja in zato je skupno povprečje sestavljeno iz vseh spremenljivk - 1 oz. vars.predmet$cont$po[-1]
povprecja.predmeti$predmet.ocena.SKUPAJ.po <- rowMeans(povprecja.predmeti[paste0(vars.predmet$cont$po[-1],"_mean")], na.rm = T)
povprecja.predmeti$predmet.ocena.SKUPAJ.praksa <- rowMeans(povprecja.predmeti[paste0(vars.predmet$cont$praksa,"_mean")], na.rm = T)
# Število študentov pri posameznem predmetu: Spremenimo iz character v numeric
povprecja.predmeti$ST_STUD <- as.numeric(povprecja.predmeti$ST_STUD)
# Kjer je negativno število pomeni, da gre za več vpisanih študentov, kot jih je v bazi oz spremenljivki ST_STUD
povprecja.predmeti$ST_STUD <- ifelse(povprecja.predmeti$ST_STUD < as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih),
as.numeric(povprecja.predmeti$N_anket) + as.numeric(povprecja.predmeti$N_zavrnjenih), povprecja.predmeti$ST_STUD)
# % odgovora
povprecja.predmeti$sodelujocih.pct <- povprecja.predmeti$N_anket / povprecja.predmeti$ST_STUD * 100
povprecja.predmeti$sodelujocih.pct_po_izpitu <- povprecja.predmeti$N_anket_po_izpitu / povprecja.predmeti$ST_STUD * 100
# % zavrnjenih
povprecja.predmeti$zavrnjenih.pct <- povprecja.predmeti$N_zavrnjenih / povprecja.predmeti$ST_STUD * 100
povprecja.predmeti$zavrnjenih.pct_po_izpitu <- povprecja.predmeti$N_zavrnjenih_po_izpitu / povprecja.predmeti$ST_STUD * 100
# N in % neodzivnih (ni pristopilo k anketi)
povprecja.predmeti$N_neodzivnih <- povprecja.predmeti$ST_STUD - povprecja.predmeti$N_anket - povprecja.predmeti$N_zavrnjenih
povprecja.predmeti$neodzivnih.pct <- povprecja.predmeti$N_neodzivnih / povprecja.predmeti$ST_STUD * 100
# Po izpitu
povprecja.predmeti$N_neodzivnih_po_izpitu <- povprecja.predmeti$ST_STUD - povprecja.predmeti$N_anket_po_izpitu - povprecja.predmeti$N_zavrnjenih_po_izpitu
povprecja.predmeti$neodzivnih.pct_po_izpitu <- povprecja.predmeti$N_neodzivnih_po_izpitu / povprecja.predmeti$ST_STUD * 100
## //average of components - all, before, after exam// ##
# preurejeno ime predmeta
povprecja.predmeti$ime.predmeta <- povprecja.predmeti$PREDMET
# IZREDNi ŠTUDIJ
izredni <- povprecja.predmeti$NACIN=="2" # če je izredni predmet mora biti to v oklepaju
izredni <- izredni[!is.na(izredni) ]
povprecja.predmeti$ime.predmeta[izredni] <- paste(povprecja.predmeti$ime.predmeta[izredni], "(izredna izvedba)")
# //IZREDNi ŠTUDIJ// #
# nova imena predmetov še k povprečjem izvajalcev[]
povprecja.izvajalci <- merge(povprecja.izvajalci, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")], by = "predmet.sifra", sort = FALSE)
########################
## ŠTUDIJSKI PROGRAMI ##
########################
# število ocen po programih (za poročila in povprečja po programih)
programi <- unique(data.predmeti[c("student.program.sifra", "student.program.ime")])
programi <- subset(programi, !is.na(student.program.sifra))
programi <- subset(programi, student.program.ime != "NA")
programi <- programi[order(programi$student.program.ime), ]
## izvajalec: Študijski program ##
povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.izv.temp <- subset(data.izvajalci, veljavna)
programi.studentov <- as.data.frame.matrix(table(paste(data.izv.temp$izvajalec.sifra, data.izv.temp$predmet.sifra, sep = "_"), data.izv.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.izvajalci[match(rownames(programi.studentov), paste(povprecja.izvajalci$izvajalec.sifra, povprecja.izvajalci$predmet.sifra, sep = "_")), names(programi.studentov)] <- programi.studentov
## predmet: Študijski program ##
povprecja.predmeti[paste0("program_studenta_", programi$student.program.sifra)] <- 0
data.prog.temp <- subset(data.predmeti, veljavna)
programi.studentov <- as.data.frame.matrix(table(data.prog.temp$predmet.sifra, data.prog.temp$student.program.sifra))
names(programi.studentov) <- paste0("program_studenta_", names(programi.studentov))
povprecja.predmeti[match(rownames(programi.studentov), povprecja.predmeti$predmet.sifra), names(programi.studentov)] <- programi.studentov
# sort by name
povprecja.izvajalci <- povprecja.izvajalci[order(povprecja.izvajalci$NAZIV.PEDAGOGA, povprecja.izvajalci$PREDMET), ]
povprecja.predmeti <- povprecja.predmeti[order(povprecja.predmeti$PREDMET),]
# Uporabimo, ko delamo izpis za TRENDE ali za HABILITACIJSKO KOMISIJO
#write.csv2(povprecja.izvajalci, paste0("results/povprecja.izvajalci-minEnot_", fakulteta, ".csv")
#write.csv2(povprecja.predmeti, paste0("results/povprecja.predmeti-minEnot_", fakulteta, ".csv")
# are there any courses with too many answers in the database according to sifrant.xlsx
premalo_vpisanih <- povprecja.predmeti$N_neodzivnih < 0
premalo_vpisanih <- !is.na(premalo_vpisanih)
if (any(premalo_vpisanih)) {
warning(c("Some courses have more students in the database than number of students that are attending the course according to sifrant.xlsx",
paste("\n",povprecja.predmeti$predmet.sifra[premalo_vpisanih], povprecja.predmeti$PREDMET[premalo_vpisanih],paste0("(",abs(povprecja.predmeti$N_neodzivnih[premalo_vpisanih]), " more students)"))))
}
# skupna povprečja izvajalcev (povprečja ocen pri vseh predmetih)
povprecja.izvajalci.skupaj <- aggregate(povprecja.izvajalci[, c("ST_STUD","N_anket","N_anketSkupaj","sodelujocih.pct","zavrnjenih.pct","neodzivnih.pct","nipouceval.pct", paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")],
by = povprecja.izvajalci[,"izvajalec.sifra", drop = FALSE],
FUN = mean, na.rm = TRUE)
# number of evaluations from different programmes
vsota.ocen.programov <- aggregate(povprecja.izvajalci[paste0("program_studenta_", programi$student.program.sifra)],
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE], FUN = sum, na.rm = TRUE)
povprecja.izvajalci.skupaj <- merge(povprecja.izvajalci.skupaj, vsota.ocen.programov, by = "izvajalec.sifra", all.x = TRUE)
# number of courses with at least minimun nuber of answers
st.ocen <- aggregate(list(st.ocen=povprecja.izvajalci$N_anket >= minEnot),
by = povprecja.izvajalci[, "izvajalec.sifra", drop = FALSE], FUN = sum, na.rm = TRUE)
povprecja.izvajalci.skupaj <- merge(povprecja.izvajalci.skupaj, st.ocen, by = "izvajalec.sifra", all.x = TRUE)
# še imena izvajalcev
povprecja.izvajalci.skupaj <- merge(povprecja.izvajalci.skupaj, unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")]),
by = "izvajalec.sifra", all.x = TRUE)
# da izračunamo povprečja vseh predmetov določenega izvajalca rabimo ocene predmetov po izvajalcih (podvojene vrstice z različnimi šiframi izvajalcev)
povprecja.predmeti.vsi.izvajalci <- merge(povprecja.izvajalci[,c("izvajalec.sifra","predmet.sifra")], povprecja.predmeti,
by = "predmet.sifra", all.x = TRUE, sort = FALSE)
povprecja.predmetov.izvajalca.skupaj <- aggregate(povprecja.predmeti.vsi.izvajalci[, c("ST_STUD","N_anket","N_anket_po_izpitu",
"sodelujocih.pct","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu",
paste0(vars.predmet$cont$vars,"_mean"),
"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.pred",
"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa",
"predmet.ocena.krediti_mean",
"predmet.ocena.kompetence1_mean")],
by = povprecja.predmeti.vsi.izvajalci[,"izvajalec.sifra", drop = FALSE],
FUN = mean, na.rm = TRUE)
# še imena izvajalcev
povprecja.predmetov.izvajalca.skupaj <- merge(povprecja.predmetov.izvajalca.skupaj,
unique(povprecja.izvajalci[,c("izvajalec.sifra","NAZIV.PEDAGOGA")]),
by = "izvajalec.sifra", all.x = TRUE)
# povprečja vseh izvajalecv pri vsakem predmetu
povprecja.predmet.izvajalci.skupaj <- aggregate(povprecja.izvajalci[, c("ST_STUD","N_anket","N_anketSkupaj","sodelujocih.pct","zavrnjenih.pct",
"neodzivnih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")],
by = povprecja.izvajalci[,"predmet.sifra",drop = FALSE],
FUN = mean, na.rm = TRUE)
# še imena predmetov
povprecja.predmet.izvajalci.skupaj <- merge(povprecja.predmet.izvajalci.skupaj, povprecja.predmeti[,c("predmet.sifra","ime.predmeta")],
by = "predmet.sifra", all.x = TRUE)
# sort
povprecja.izvajalci.skupaj <- povprecja.izvajalci.skupaj[order(povprecja.izvajalci.skupaj$NAZIV.PEDAGOGA),]
povprecja.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[order(povprecja.predmetov.izvajalca.skupaj$NAZIV.PEDAGOGA),]
povprecja.predmet.izvajalci.skupaj <- povprecja.predmet.izvajalci.skupaj[order(povprecja.predmet.izvajalci.skupaj$ime.predmeta),]
#write.csv2(povprecja.izvajalci.skupaj, file='results/povprecja.izvajalci.skupaj-minEnot.csv')
#write.csv2(povprecja.predmetov.izvajalca.skupaj, file='results/povprecja.predmetov.izvajalca.skupaj-minEnot.csv')
#write.csv2(povprecja.predmet.izvajalci.skupaj, file='results/povprecja.predmet.izvajalci.skupaj-minEnot.csv')
#################
## Quantiles ##
#################
# for every lecturer/course
# S funkcijo kvantRang in kvantRang1 izračunamo in barvamo kvantilne range, ki se pokažejo v posameznih tabelah (glej skirpto funkcije.r)
# Kvantilni rangi za izvajalce pri predmetih (IPP)
kvantili.izvajalci <- povprecja.izvajalci[c("izvajalec.sifra","NAZIV.PEDAGOGA","predmet.sifra","ime.predmeta","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci[[var]] <- kvantRang(kvantili.izvajalci[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci[[var]] <- kvantRang1(kvantili.izvajalci[[var]])
}
# //Kvantilni rangi za izvajalce pri predmetih (IPP)// #
# Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu
kvantili.predmeti <- povprecja.predmeti[c("predmet.sifra","ime.predmeta","ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct",
"sodelujocih.pct_po_izpitu",paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.SKUPAJ",
"predmet.ocena.SKUPAJ.pred","predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa",
"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")]
for (var in c(paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.pred","predmet.ocena.SKUPAJ.po",
"predmet.ocena.SKUPAJ.praksa")) {
kvantili.predmeti[[var]] <- kvantRang(kvantili.predmeti[[var]])
}
for (var in c("ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct","sodelujocih.pct_po_izpitu")) {
kvantili.predmeti[[var]] <- kvantRang1(kvantili.predmeti[[var]])
}
for (var in c("predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")) {
kvantili.predmeti[[var]] <- kvantRang2(kvantili.predmeti[[var]])
}
# //Kvantilni rangi za predmet: komponente ankete PRED in PO izpitu// #
## lecturer averages ##
kvantili.izvajalci.skupaj <- povprecja.izvajalci.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD","N_anket",
"sodelujocih.pct",paste0(vars.izvajalec$cont$vars,"_mean"),
"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang(kvantili.izvajalci.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","sodelujocih.pct")) {
kvantili.izvajalci.skupaj[[var]] <- kvantRang1(kvantili.izvajalci.skupaj[[var]])
}
kvantili.predmetov.izvajalca.skupaj <- povprecja.predmetov.izvajalca.skupaj[c("izvajalec.sifra","NAZIV.PEDAGOGA","ST_STUD",
"N_anket","N_anket_po_izpitu","sodelujocih.pct",
"sodelujocih.pct_po_izpitu",paste0(vars.predmet$cont$vars,"_mean"),
"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.pred",
"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa",
"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")]
for (var in c(paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.pred",
"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa","predmet.ocena.krediti_mean",
"predmet.ocena.kompetence1_mean")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang(kvantili.predmetov.izvajalca.skupaj[[var]])
}
for (var in c("ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct","sodelujocih.pct_po_izpitu")) {
kvantili.predmetov.izvajalca.skupaj[[var]] <- kvantRang1(kvantili.predmetov.izvajalca.skupaj[[var]])
}
## for table names (izpis izvajalca, programov, fakultete) ##
kvantili.izvajalci.st <- sum(kvantili.izvajalci$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih izvajalcev fakultete
# Glej npr izpis izvajalca, Tabela 1.1 (vrstico Povprečje FDV),
# kjer se izpiše število predmetov v anketi PRED izpitom
kvantili.predmeti.st.pred <- sum(kvantili.predmeti$predmet.ocena.SKUPAJ.pred != ".") # Število vseh ocenjenih predmetov: anketa PRED
kvantili.predmeti.st.po <- sum(kvantili.predmeti$predmet.ocena.SKUPAJ.po != ".") # Število vseh ocenjenih predmetov: anketa PO
kvantili.izvajalci.skupaj.st <- sum(kvantili.izvajalci.skupaj$izvajalec.ocena.SKUPAJ != ".") # Število vseh ocenjenih IPP (izvajalcev pri)
kvantili.predmetov.izvajalca.skupaj.st.pred <- sum(kvantili.predmetov.izvajalca.skupaj$predmet.ocena.SKUPAJ.pred != ".")
kvantili.predmetov.izvajalca.skupaj.st.po <- sum(kvantili.predmetov.izvajalca.skupaj$predmet.ocena.SKUPAJ.po != ".")
kvantili.ustreznotsKT <- sum(kvantili.predmeti$predmet.ocena.krediti_mean != ".") # Število vseh ocen za ustreznost KT (anketa PO)
kvantili.zadovoljstvo <- sum(kvantili.predmeti$predmet.ocena.zadovoljstvo_mean != ".") # Število vseh ocen za ustreznost KT (anketa PO)
## //Quantiles// ##
########################
## FACULTY AVERAGES ##
########################
# Povprečje izvajalcev
vars.izvajalec$cont$meansFDV[c(vars.izvajalec$cont$vars,"povprecje.ocen")] <- colMeans(povprecja.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"),"izvajalec.ocena.SKUPAJ")], na.rm = TRUE)
# Povprečje predmetov (anketa PRED izpitom, anketa PO izpitu, študijska praksa)
vars.predmet$cont$meansFDV[c(vars.predmet$cont$vars,"povprecje.ocen","povprecje.ocen.pred","povprecje.ocen.po","povprecje.ocen.praksa")] <- colMeans(povprecja.predmeti[c(paste0(vars.predmet$cont$vars, "_mean"),"predmet.ocena.SKUPAJ",
"predmet.ocena.SKUPAJ.pred","predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa")], na.rm=TRUE)
# Povprečje študijskih praks
vars.predmet$cont$FDVpraksa[c(vars.predmet$cont$praksa,"povprecje.ocen.praksa")] <- colMeans(povprecja.predmeti[c(paste0(vars.predmet$cont$praksa, "_mean"),"predmet.ocena.SKUPAJ.praksa")], na.rm = TRUE)
# Povprečje Ustreznost KT
vars.predmet$krediti$meansFDV[c("predmet.ocena.krediti")] <- colMeans(povprecja.predmeti["predmet.ocena.krediti_mean"], na.rm = TRUE)
# Standardni odklon za ustreznost KT
vars.predmet$krediti$meansFDV1[c("predmet.ocena.krediti.sd")] <- colMeans(povprecja.predmeti["predmet.ocena.krediti_sd"], na.rm = TRUE)
vars.predmet$krediti$pctsFDV[paste0("krediti_razporejanje_pct_", 1:5)] <- colMeans(povprecja.predmeti[paste0("krediti_razporejanje_pct_", 1:5)], na.rm = TRUE)
# Povprečje kompetence
vars.predmet$kompetence1$meansFDV[c("predmet.ocena.kompetence1")] <- colMeans(povprecja.predmeti["predmet.ocena.kompetence1_mean"], na.rm = TRUE)
# Standardni odklon za kompetence
vars.predmet$kompetence1$meansFDV1[c("predmet.ocena.kompetence1.sd")] <- colMeans(povprecja.predmeti["predmet.ocena.kompetence1_sd"], na.rm = TRUE)
vars.predmet$kompetence1$pctsFDV[paste0("kompetence1_razporejanje_pct_", 1:5)] <- colMeans(povprecja.predmeti[paste0("kompetence1_razporejanje_pct_", 1:5)], na.rm = TRUE)
# response
povprecja.izvajalci[,41] <- as.numeric(povprecja.izvajalci[,41])
#######################################################
# Skupna Povprečja IZVAJLCEV fakultete glede na STOPNJO
#######################################################
FDVizvajalci <- rbind(skupaj = colMeans(povprecja.izvajalci[c("ST_STUD","N_anket","N_anketSkupaj","sodelujocih.pct","zavrnjenih.pct","neodzivnih.pct","nipouceval.pct")], na.rm = T),
"1" = colMeans(povprecja.izvajalci[povprecja.izvajalci$STOPNJA == 1, c("ST_STUD","N_anket","N_anketSkupaj","sodelujocih.pct","zavrnjenih.pct","neodzivnih.pct","nipouceval.pct")], na.rm = T),
"2"=colMeans(povprecja.izvajalci[povprecja.izvajalci$STOPNJA == 2, c("ST_STUD","N_anket","N_anketSkupaj","sodelujocih.pct","zavrnjenih.pct","neodzivnih.pct","nipouceval.pct")], na.rm = T))
######################################################################################
# Skupna Povprečja PREDMETOV fakultete glede na STOPNJO in glede na SEMESTER IZVAJANJA
######################################################################################
FDVpredmeti <- rbind(skupaj=colMeans(povprecja.predmeti[c("ST_STUD","N_anket","N_anket_po_izpitu",
"sodelujocih.pct","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu")], na.rm = T),
"1"=colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 1,
c("ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct",
"sodelujocih.pct_po_izpitu","zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu")], na.rm = T),
"2"=colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 2,
c("ST_STUD","N_anket","N_anket_po_izpitu",
"sodelujocih.pct","sodelujocih.pct_po_izpitu",
"zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu")], na.rm = T),
"prvi_semester" = colMeans(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)
[c("ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct",
"sodelujocih.pct_po_izpitu","zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu")], na.rm = T),
"drugi_semester" = colMeans(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)
[c("ST_STUD","N_anket","N_anket_po_izpitu","sodelujocih.pct",
"sodelujocih.pct_po_izpitu","zavrnjenih.pct","zavrnjenih.pct_po_izpitu",
"neodzivnih.pct","neodzivnih.pct_po_izpitu")], na.rm = T))
## //FACULTY AVERAGES// ##
#####################################
# POVPREČJA PO ŠTUDIJSKIH PROGRAMIH
#####################################
# Skupne ocene predmetov po posameznih študijskih programih
progMeanPredm <- aggregate(data.predmeti[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ <- rowMeans(progMeanPredm[vars.predmet$cont$vars], na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ.pred <- rowMeans(progMeanPredm[vars.predmet$cont$pred], na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ.po <- rowMeans(progMeanPredm[vars.predmet$cont$po[-1]], na.rm = TRUE)
progMeanPredm$predmet.ocena.SKUPAJ.praksa <- rowMeans(progMeanPredm[vars.predmet$cont$praksa], na.rm = TRUE)
# Skupna povprečja izvajalcav po posameznih študijskih programih
progMeanIzv <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by=data.izvajalci["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanIzv <- cbind(progMeanIzv, izvajalec.ocena.SKUPAJ=rowMeans(progMeanIzv[vars.izvajalec$cont$vars]))
#izračun povprečij izvajalcev za študijske programe in insert v poročila za fakulteto
progMeanIzv.fak <- aggregate(data.izvajalci[vars.izvajalec$cont$vars], by = data.izvajalci[c("student.program.sifra","student.program.ime")],
FUN = mean,na.rm = TRUE)
progMeanIzv.fak1 <- cbind(progMeanIzv.fak, izvajalec.ocena.SKUPAJ = rowMeans(progMeanIzv.fak[vars.izvajalec$cont$vars], na.rm = TRUE))
# Število odogovorov (število anket) pri posameznem študijskem programu
st.odgovorov.fak1 <- aggregate(data.izvajalci$veljavna, by = data.izvajalci[c("student.program.sifra","student.program.ime")], FUN = sum)
colnames(st.odgovorov.fak1)[3] <- "N_anket" # Poimenujemo stolpec
progMeanIzv.fak1 <- merge(progMeanIzv.fak1, st.odgovorov.fak1, by = c("student.program.sifra","student.program.ime"),
all = TRUE, sort = FALSE)
## //povprečja programov// ##
## PODATKI ZA TABELE, KI SE DODAJO K "ANALIZI IZVAJALCA PRI PREDMETU PO PROGRAMIH IN LETNIKIH" ##
test1 <- aggregate(data.izvajalci[vars.izvajalec$cont$vars],
by = data.izvajalci[c("student.program.ime")], FUN = mean, na.rm = TRUE)
test2 <- cbind(test1, izvajalec.ocena.SKUPAJ=rowMeans(test1[vars.izvajalec$cont$vars], na.rm = TRUE))
#Zaokroži vrednosti za izpis programov pri IZVAJALCU
round_df <- function(x, digits) {
# round all numeric variables
# x: data frame
# digits: number of digits to round
numeric_columns <- sapply(x, class) == 'numeric'
x[numeric_columns] <- round(x[numeric_columns], digits)
x
}
test2 <- round_df(test2, 1)
## //PODATKI ZA TABELE// ##
## PODATKI ZA TABELE, KI SE DODAJO K "Analiza predmeta po programih in letnikih" ##
vars.predmet$cont$vars1 <- vars.predmet$cont$vars[-c(12,13,14,15,16,17,18,19,20)]
vars.predmet.vars <- vars.predmet$cont$vars1[-c(8,9,10,11)]
test.pred <- aggregate(data.predmeti[vars.predmet.vars],
by = data.predmeti[c("student.program.ime")], FUN = mean, na.rm = TRUE)
test.pred <- cbind(test.pred, predmet.ocena.SKUPAJ = rowMeans(test.pred[vars.predmet.vars], na.rm = TRUE))
#Zaokroži vrednosti za izpis programov pri PREDMETU
test.pred <- round_df(test.pred, 1)
## // PODATKI ZA TABELE// ##
# ZARADI UMETNO GENERIRANIH ŠIFER IZVAJALCEV SE ZA ANKETO PO ZA ŠTUDIJSKE PROGRAME NISO PRAVILNO IZPISALA POVPREČJA IN ŠTEVILO ODGOVOROV
# Zato smo komponente za anketo PO izpitu analizirali iz prvotne baze (anketa po izpitu) namesto iz baze "data.predmeti"
# Tako smo bazo data_po_izpitu uporabili le v primerih, ko se povprečja navezujejo na študijske programe za anketo PO IZPITU
data.predmet.po <- data_po_izpitu
# Opredelimo imena spremenljivk oz komponent v ankeit PO izpitu
lokacije.predmet.po <- lokacije.predmet[c(1:1,3:3,13:nrow(lokacije.predmet)), 1, drop = FALSE]
## PODATKI ZA PREDMETE PO IZPITU ##
# Ponovimo, kar smo naredili že na začetku a tokrat le na podatkih PO izpitu.
data.predmeti.PO <- data.predmet.po[c(lokacije.predmet.po[, 1], "idprog","letnik","program", "lurker")] # Združimo spremenljivke v lokacije.predmet[, 1] in šifro študentov
names(data.predmeti.PO) <- c(rownames(lokacije.predmet.po), "ID_vrsta_studija","Letnik","Naziv","lurker")
someMissVars.PO <- rownames(navP[!is.na(navP$missings.table), ])
someMissVars.PO <- someMissVars.PO[8:20] # 8:20 so spremenljivke (komponente), ki se nanašajo na anketo po izpitu
data.predmeti.PO.someMiss <- data.predmeti.PO[c("predmet.sifra", someMissVars.PO)]
# setting missing values and keeping some (defined in navodila.xlsx in column missing.table) for frequency tables
for (var in c(vars.predmet$cont$vars[8:20],
vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)) {
miss <- unlist(strsplit(navodila[var,]$missings, ","))
data.predmeti.PO[, var][data.predmeti.PO[, var] %in% miss] <- NA
if (var %in% c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)) {
data.predmeti.PO[, var] <- as.numeric(data.predmeti.PO[, var])
}
if (var %in% someMissVars.PO) {
someMissVals <-
matrix(unlist(strsplit(unlist(strsplit(navodila[var,]$missings.table, ",")), "=")), ncol = 2, byrow = TRUE)
miss <- miss[!(miss %in% someMissVals[, 1])]
data.predmeti.PO.someMiss[, var][data.predmeti.PO.someMiss[, var] %in% miss] <- NA
for (missVar in 1:nrow(someMissVals)) {
data.predmeti.PO.someMiss[, var][data.predmeti.PO.someMiss[, var] == someMissVals[missVar, 1] &
!is.na(data.predmeti.PO.someMiss[, var])] <- someMissVals[missVar, 2]
}
}
}
# all values with some miss for tables
predmet.someMiss.PO <- sort(unique(as.vector(as.matrix(data.predmeti.PO.someMiss[, vars.predmet$cont$vars[8:20]]))))
if(any(predmet.someMiss.PO=="")) {
predmet.someMiss.PO <- predmet.someMiss.PO[predmet.someMiss.PO != ""]
}
data.predmeti.PO <- data.predmeti.PO[order(data.predmeti.PO$predmet.sifra),]
# ali je anketa veljavna za predmet; ali je student ni izpolnjeval (je pa začel anketo)
data.predmeti.PO$veljavna_po_izpitu <- data.predmeti.PO$predmet.izpolnjeval.po == -1 & !is.na(data.predmeti.PO$predmet.izpolnjeval.po)
data.predmeti.PO$zavrnjena_po_izpitu <- (!data.predmeti.PO$veljavna_po_izpitu & !is.na(data.predmeti.PO$predmet.izpolnjeval.po))
# adding student data (year and programme)
data.predmeti.PO <- merge(data.predmeti.PO, programi.imena[,c("ID", "Naziv")], by.x="ID_vrsta_studija", by.y="ID", all.x=TRUE, sort=FALSE)
names(data.predmeti.PO)[match(c("ID_vrsta_studija","Letnik","Naziv.y"), names(data.predmeti.PO))] <- c("student.program.sifra","student.letnik","student.program.ime")
##############
## PREDMETI ##
##############
# Izreačunamo povprečja predmetov še za anketo PO izpitu
# povprečja
predMean <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti.PO["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# Mediane
predMedian <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti.PO["predmet.sifra"], FUN = median, na.rm = TRUE)
colnames(predMedian)[2:ncol(predMedian)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_median")
# sd
predSd <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.predmeti.PO["predmet.sifra"], FUN = sd, na.rm = TRUE)
colnames(predSd)[2:ncol(predSd)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_sd")
# min
predMin <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars)], by = data.predmeti.PO["predmet.sifra"], FUN = min, na.rm = TRUE)
colnames(predMin)[2:ncol(predMin)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars),"_min")
predMin[predMin==Inf] <- NA
# max
predMax <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars)],
by = data.predmeti.PO["predmet.sifra"], FUN = max, na.rm = TRUE)
colnames(predMax)[2:ncol(predMax)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars),"_max")
predMax[predMax==-Inf] <- NA
# N posamezne spremenljivke
predN <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti.PO["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.predmeti.PO$veljavna, by = data.predmeti.PO["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.predmeti.PO$veljavna_po_izpitu, by = data.predmeti.PO["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
# N didn't want to answer before and after exam
predNzavrnjenih <- aggregate(data.predmeti.PO$zavrnjena, by = data.predmeti.PO["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih)[2] <- "N_zavrnjenih"
predNzavrnjenih_po_izpitu <- aggregate(data.predmeti.PO$zavrnjena_po_izpitu, by = data.predmeti.PO["predmet.sifra"], FUN = sum)
colnames(predNzavrnjenih_po_izpitu)[2] <- "N_zavrnjenih_po_izpitu"
# N Lurkerjev PRED izpitom
data.predmeti.PO$lurker[data.predmeti.PO$lurker==0] <- NA
poNLurkerji <- aggregate(as.numeric(data.predmeti.PO$lurker), by = data.predmeti.PO["predmet.sifra"],FUN=function(x) sum(!is.na(x)))
colnames(poNLurkerji)[2] <- "N_lurkerjev_po"
programi.PO <- unique(data.predmeti.PO[c("student.program.sifra", "student.program.ime")])
programi.PO <- subset(programi.PO, !is.na(student.program.sifra))
programi.PO <- subset(programi.PO, student.program.ime != "NA")
programi.PO <- programi.PO[order(programi.PO$student.program.ime), ]
## ŠTUDIJSKI PROGRAMI (ANKETA PO IZPTTU) ##
# Še za aneto PO izpitu izračunamo povprečja študijskih programov
# Skupne ocene predmetov po posameznih študijskih programih
progMeanPredm.PO <- aggregate(data.predmeti.PO[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.predmeti.PO["student.program.sifra"], FUN = mean, na.rm = TRUE)
progMeanPredm.PO$predmet.ocena.SKUPAJ.po <- rowMeans(progMeanPredm.PO[vars.predmet$cont$po[-1]], na.rm = TRUE)
progMeanPredm.PO$predmet.ocena.SKUPAJ.praksa <- rowMeans(progMeanPredm.PO[vars.predmet$cont$praksa], na.rm = TRUE)
## course averages by programme: ANKETA PO IZPITU ##
povprecja.predmeti.programi.PO <- NULL
povprecja.predmeti.programi.PO.brez.cenzure.PO <- NULL # Zapišemo vsa povprečja oz. vse ocene, tudi tista, ki imajo 4 odgovore ali manj
## course averages by programme ##
for (program in programi.PO$student.program.sifra) {
# povprečja
data.program <- subset(data.predmeti.PO, student.program.sifra == program)
predMean <- aggregate(data.program[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.program["predmet.sifra"], FUN = mean, na.rm = TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.program[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.program["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.program$veljavna, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.program$veljavna_po_izpitu, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
predmeti.program <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.programi.PO.brez.cenzure.PO <- rbind(povprecja.predmeti.programi.PO.brez.cenzure.PO,cbind(predmeti.program,
program.studentov = program,
program.studentov.ime = programi.PO[programi.PO$student.program.sifra == program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.program[c(paste0(vars.predmet$cont$vars[8:20],"_N"),"predmet.ocena.krediti_N","predmet.ocena.kompetence1_N")] < minEnot
predmeti.program[c(paste0(vars.predmet$cont$vars[8:20],"_mean"),"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.program$predmet.ocena.SKUPAJ.po <- rowMeans(predmeti.program[paste0(vars.predmet$cont$po[-1],"_mean")],na.rm=T)
predmeti.program$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.program[paste0(vars.predmet$cont$praksa,"_mean")],na.rm=T)
povprecja.predmeti.programi.PO <- rbind(povprecja.predmeti.programi.PO, cbind(predmeti.program, program.studentov = program,
program.studentov.ime = programi.PO[programi.PO$student.program.sifra==program,
"student.program.ime"]))
}
povprecja.predmeti.programi.PO <- merge(povprecja.predmeti.programi.PO, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.programi.PO.brez.cenzure.PO <- merge(povprecja.predmeti.programi.PO.brez.cenzure.PO,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
## //course averages by programme// ##
## course averages by programme ##
povprecja.predmeti.programi <- NULL
povprecja.predmeti.programi.brez.cenzure <- NULL # Zapišemo vsa povprečja oz. vse ocene, tudi tista, ki imajo 4 odgovore ali manj
## course averages by programme ##
for (program in programi$student.program.sifra) {
# povprečja
data.program <- subset(data.predmeti, student.program.sifra == program)
predMean <- aggregate(data.program[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.program["predmet.sifra"], FUN = mean, na.rm = TRUE)
# predMean.po <- aggregate(data.program.po[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.program.po["predmet.sifra"], FUN = mean, na.rm = TRUE)
# predMean <- merge(predMean,predMean.po[c("predmet.sifra","predmet.ocena.kompetence","predmet.ocena.vsebine",
# "predmet.ocena.naloge","predmet.ocena.kriteriji",
# "predmet.ocena.krediti","predmet.ocena.kompetence1")], by="predmet.sifra", all=T, sort=F)
#predMean <- predMean[, -grep(".x", colnames(predMean))]
#colnames(predMean) <- gsub("\\.y", "", colnames(predMean))
#predMean <- predMean[c(1:8,18:21,9:17,22:23)]
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.program[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.program["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
# predNpo <- aggregate(data.program.po[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.program.po["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
#predN <- merge(predN,predNpo[c("predmet.sifra","predmet.ocena.kompetence","predmet.ocena.vsebine",
# "predmet.ocena.naloge","predmet.ocena.kriteriji",
# "predmet.ocena.krediti","predmet.ocena.kompetence1")], by="predmet.sifra", all=T, sort=F)
#predN <- predN[, -grep(".x", colnames(predN))]
#colnames(predN) <- gsub("\\.y", "", colnames(predN))
#predN <- predN[c(1:8,18:21,9:17,22:23)]
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.program$veljavna, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.program$veljavna_po_izpitu, by = data.program["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
predmeti.program <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.program <- merge(predmeti.program, predNanket_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.programi.brez.cenzure <- rbind(povprecja.predmeti.programi.brez.cenzure,cbind(predmeti.program,
program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra == program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.program[c(paste0(vars.predmet$cont$vars,"_N"),"predmet.ocena.krediti_N","predmet.ocena.kompetence1_N")] < minEnot
predmeti.program[c(paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.program$predmet.ocena.SKUPAJ <- rowMeans(predmeti.program[paste0(vars.predmet$cont$vars,"_mean")],na.rm=T)
predmeti.program$predmet.ocena.SKUPAJ.pred <- rowMeans(predmeti.program[paste0(vars.predmet$cont$pred,"_mean")],na.rm=T)
predmeti.program$predmet.ocena.SKUPAJ.po <- rowMeans(predmeti.program[paste0(vars.predmet$cont$po[-1],"_mean")],na.rm=T)
predmeti.program$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.program[paste0(vars.predmet$cont$praksa,"_mean")],na.rm=T)
povprecja.predmeti.programi <- rbind(povprecja.predmeti.programi, cbind(predmeti.program, program.studentov = program,
program.studentov.ime = programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
povprecja.predmeti.programi <- merge(povprecja.predmeti.programi, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.programi.brez.cenzure <- merge(povprecja.predmeti.programi.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
## //course averages by programme// ##
## course averages by student's year ANKETA PO IZPITU ##
povprecja.predmeti.letniki.PO <- NULL
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## course averages by students' year ##
for (letnik in unique(sort(data.predmeti.PO$student.letnik))) {
# povprečja
data.letnik <- subset(data.predmeti.PO, student.letnik == letnik)
predMean <- aggregate(data.letnik[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.letnik["predmet.sifra"],
FUN=mean, na.rm=TRUE)
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.letnik[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by=data.letnik["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.letnik$veljavna, by = data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.letnik$veljavna_po_izpitu, by=data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
predmeti.letnik <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- rbind(povprecja.predmeti.letniki.PO.brez.cenzure.PO, cbind(predmeti.letnik, letnik.studentov = letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.letnik[c(paste0(vars.predmet$cont$vars[8:20],"_N"),"predmet.ocena.krediti_N","predmet.ocena.kompetence1_N")] < minEnot
predmeti.letnik[c(paste0(vars.predmet$cont$vars[8:20],"_mean"),"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.letnik$predmet.ocena.SKUPAJ.po <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$po[-1],"_mean")], na.rm = T)
predmeti.letnik$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$praksa,"_mean")], na.rm = T)
povprecja.predmeti.letniki.PO <- rbind(povprecja.predmeti.letniki.PO, cbind(predmeti.letnik, letnik.studentov=letnik))
}
povprecja.predmeti.letniki.PO <- merge(povprecja.predmeti.letniki.PO, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.letniki.PO.brez.cenzure.PO <- merge(povprecja.predmeti.letniki.PO.brez.cenzure.PO,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
## //course averages by students' year// ##
## course averages by student's year ##
povprecja.predmeti.letniki <- NULL
povprecja.predmeti.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## course averages by students' year ##
for (letnik in unique(sort(data.predmeti$student.letnik))) {
# povprečja
data.letnik <- subset(data.predmeti, student.letnik == letnik)
# data.letnik.po <- subset(data.predmeti.PO, student.program.sifra == program)
predMean <- aggregate(data.letnik[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by = data.letnik["predmet.sifra"], FUN=mean, na.rm=TRUE)
#predMean.po <- aggregate(data.letnik.po[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.letnik.po["predmet.sifra"], FUN = mean, na.rm = TRUE)
#predMean <- merge(predMean,predMean.po[c("predmet.sifra","predmet.ocena.kompetence","predmet.ocena.vsebine",
# "predmet.ocena.naloge","predmet.ocena.kriteriji",
# "predmet.ocena.krediti","predmet.ocena.kompetence1")], by="predmet.sifra", all=T, sort=F)
#predMean <- predMean[, -grep(".x", colnames(predMean))]
#colnames(predMean) <- gsub("\\.y", "", colnames(predMean))
#predMean <- predMean[c(1:8,18:21,9:17,22:23)]
colnames(predMean)[2:ncol(predMean)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_mean")
# N posamezne spremenljivke
predN <- aggregate(data.letnik[c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)],
by=data.letnik["predmet.sifra"], FUN=function(x) sum(!is.na(x)))
#predNpo <- aggregate(data.letnik.po[c(vars.predmet$cont$vars[8:20],vars.predmet$krediti$vars,vars.predmet$kompetence1$vars)], by = data.letnik.po["predmet.sifra"], FUN = function(x) sum(!is.na(x)))
#predN <- merge(predN,predNpo[c("predmet.sifra","predmet.ocena.kompetence","predmet.ocena.vsebine",
# "predmet.ocena.naloge","predmet.ocena.kriteriji",
# "predmet.ocena.krediti","predmet.ocena.kompetence1")], by="predmet.sifra", all=T, sort=F)
#predN <- predN[, -grep(".x", colnames(predN))]
#colnames(predN) <- gsub("\\.y", "", colnames(predN))
#predN <- predN[c(1:8,18:21,9:17,22:23)]
colnames(predN)[2:ncol(predN)] <- paste0(c(vars.predmet$cont$vars,vars.predmet$krediti$vars,vars.predmet$kompetence1$vars),"_N")
# N answering before and after exam
predNanket <- aggregate(data.letnik$veljavna, by = data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket)[2] <- "N_anket"
predNanket_po_izpitu <- aggregate(data.letnik$veljavna_po_izpitu, by=data.letnik["predmet.sifra"], FUN = sum)
colnames(predNanket_po_izpitu)[2] <- "N_anket_po_izpitu"
predmeti.letnik <- merge(predMean, predN, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket, by = "predmet.sifra", all = TRUE, sort = FALSE)
predmeti.letnik <- merge(predmeti.letnik, predNanket_po_izpitu, by = "predmet.sifra", all = TRUE, sort = FALSE)
povprecja.predmeti.letniki.brez.cenzure <- rbind(povprecja.predmeti.letniki.brez.cenzure, cbind(predmeti.letnik, letnik.studentov = letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- predmeti.letnik[c(paste0(vars.predmet$cont$vars,"_N"),"predmet.ocena.krediti_N","predmet.ocena.kompetence1_N")] < minEnot
predmeti.letnik[c(paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")][premalo] <- NA
# average of components - all, before, after exam
predmeti.letnik$predmet.ocena.SKUPAJ <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$vars,"_mean")], na.rm = T)
predmeti.letnik$predmet.ocena.SKUPAJ.pred <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$pred,"_mean")], na.rm = T)
predmeti.letnik$predmet.ocena.SKUPAJ.po <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$po[-1],"_mean")], na.rm = T)
predmeti.letnik$predmet.ocena.SKUPAJ.praksa <- rowMeans(predmeti.letnik[paste0(vars.predmet$cont$praksa,"_mean")], na.rm = T)
povprecja.predmeti.letniki <- rbind(povprecja.predmeti.letniki, cbind(predmeti.letnik, letnik.studentov=letnik))
}
povprecja.predmeti.letniki <- merge(povprecja.predmeti.letniki, povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
povprecja.predmeti.letniki.brez.cenzure <- merge(povprecja.predmeti.letniki.brez.cenzure,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA")],
by = "predmet.sifra", all.x = T)
## //course averages by students' year// ##
####################################
## lecturer averages by programme ##
####################################
povprecja.izvajalci.programi <- NULL
povprecja.izvajalci.programi.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by programme ##
for (program in programi$student.program.sifra) {
data.program <- subset(data.izvajalci, student.program.sifra == program)
if (nrow(data.program)>0){
# povprečja
izvMean <- aggregate(data.program[vars.izvajalec$cont$vars],by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = mean, na.rm = TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.program[vars.izvajalec$cont$vars], by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.program$veljavna, by=data.program[c("predmet.sifra","izvajalec.sifra")], FUN = sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.program <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
izvajalci.program <- merge(izvajalci.program, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all = TRUE, sort = FALSE)
povprecja.izvajalci.programi.brez.cenzure <- rbind(povprecja.izvajalci.programi.brez.cenzure,
cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.program[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
# average of components
izvajalci.program$izvajalec.ocena.SKUPAJ <- rowMeans(izvajalci.program[paste0(vars.izvajalec$cont$vars,"_mean")],na.rm=T)
povprecja.izvajalci.programi <- rbind(povprecja.izvajalci.programi, cbind(izvajalci.program, program.studentov=program,
program.studentov.ime=programi[programi$student.program.sifra==program,
"student.program.ime"]))
}
}
povprecja.izvajalci.programi <- merge(povprecja.izvajalci.programi,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.predmeti.programi1 <- merge(povprecja.predmeti.programi,
povprecja.predmeti[, c("predmet.sifra", "ime.predmeta", "NACIN_STUDIJA",
"ST_STUD","sodelujocih.pct", "sodelujocih.pct_po_izpitu",
"zavrnjenih.pct", "zavrnjenih.pct_po_izpitu","neodzivnih.pct",
"neodzivnih.pct_po_izpitu")],
by="predmet.sifra", all.x=T)
povprecja.izvajalci.programi.brez.cenzure <- merge(povprecja.izvajalci.programi.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by programme// ##
#########################################
## lecturer averages by students' year ##
#########################################
povprecja.izvajalci.letniki <- NULL
povprecja.izvajalci.letniki.brez.cenzure <- NULL # Vsa povprečja oz. vse ocene, tudi tiste, ki imajo 4 odgovore ali manj
## lecturer averages by students' year ##
for (letnik in unique(sort(data.izvajalci$student.letnik))) {
data.letnik <- subset(data.izvajalci, student.letnik == letnik)
# povprečja
izvMean <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=mean, na.rm=TRUE)
colnames(izvMean)[3:ncol(izvMean)] <- paste0(vars.izvajalec$cont$vars,"_mean")
# N posamezne spremenljivke
izvN <- aggregate(data.letnik[vars.izvajalec$cont$vars], by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=function(x) sum(!is.na(x)))
colnames(izvN)[3:ncol(izvN)] <- paste0(vars.izvajalec$cont$vars,"_N")
# N anket
izvNanket <- aggregate(data.letnik$veljavna, by=data.letnik[c("predmet.sifra","izvajalec.sifra")], FUN=sum)
colnames(izvNanket)[3] <- "N_anket"
# Merge
izvajalci.letnik <- merge(izvMean, izvN, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
izvajalci.letnik <- merge(izvajalci.letnik, izvNanket, by=c("izvajalec.sifra", "predmet.sifra"), all=TRUE, sort=FALSE)
povprecja.izvajalci.letniki.brez.cenzure <- rbind(povprecja.izvajalci.letniki.brez.cenzure,
cbind(izvajalci.letnik, letnik.studentov=letnik))
# zakrivanje vrednosti kjer ni dovolj enot
premalo <- izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_N")] < minEnot
izvajalci.letnik[paste0(vars.izvajalec$cont$vars,"_mean")][premalo] <- NA
povprecja.izvajalci.letniki <- rbind(povprecja.izvajalci.letniki, cbind(izvajalci.letnik, letnik.studentov=letnik))
}
povprecja.izvajalci.letniki <- merge(povprecja.izvajalci.letniki,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra",
"ime.predmeta", "NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
povprecja.izvajalci.letniki.brez.cenzure <- merge(povprecja.izvajalci.letniki.brez.cenzure,
povprecja.izvajalci[,c("izvajalec.sifra", "predmet.sifra", "ime.predmeta",
"NAZIV.PEDAGOGA", "NACIN_STUDIJA")],
by=c("izvajalec.sifra", "predmet.sifra"), all.x=T)
## //lecturer averages by students' year// ##
############################
# quantiles by programme #
###########################
kvantili.izvajalci.programi <- NULL
for (program in unique(povprecja.izvajalci.programi$program.studentov)) {
kvantili.izvajalci.program <- povprecja.izvajalci.programi[povprecja.izvajalci.programi$program.studentov == program &
povprecja.izvajalci.programi$N_anket > 0,
c("izvajalec.sifra","predmet.sifra","program.studentov","program.studentov.ime",
"N_anket",paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")]
for (var in c(paste0(vars.izvajalec$cont$vars,"_mean"),"izvajalec.ocena.SKUPAJ")) {
kvantili.izvajalci.program[[var]] <- kvantRang(kvantili.izvajalci.program[[var]])
}
for (var in c("N_anket")) {
kvantili.izvajalci.program[[var]] <- kvantRang1(kvantili.izvajalci.program[[var]])
}
kvantili.izvajalci.programi <- rbind(kvantili.izvajalci.programi, kvantili.izvajalci.program)
}
kvantili.predmeti.programi <- NULL
for (program in unique(povprecja.predmeti.programi$program.studentov)) {
kvantili.predmeti.program <- povprecja.predmeti.programi[povprecja.predmeti.programi$program.studentov == program &
(povprecja.predmeti.programi$N_anket > 0 | povprecja.predmeti.programi$N_anket_po_izpitu > 0),
c("predmet.sifra","N_anket","N_anket_po_izpitu","program.studentov","program.studentov.ime",
paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.SKUPAJ","predmet.ocena.SKUPAJ.pred",
"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa","predmet.ocena.krediti_mean",
"predmet.ocena.kompetence1_mean")]
for (var in c(paste0(vars.predmet$cont$vars,"_mean"),"predmet.ocena.SKUPAJ",
"predmet.ocena.SKUPAJ.pred","predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa")) {
kvantili.predmeti.program[[var]] <- kvantRang(kvantili.predmeti.program[[var]])
}
for (var in c("N_anket","N_anket_po_izpitu")) {
kvantili.predmeti.program[[var]] <- kvantRang1(kvantili.predmeti.program[[var]])
}
for (var in c("predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")) {
kvantili.predmeti.program[[var]] <- kvantRang2(kvantili.predmeti.program[[var]])
}
kvantili.predmeti.programi <- rbind(kvantili.predmeti.programi, kvantili.predmeti.program)
}
kvantili.predmeti.programi.PO <- NULL
for (program in unique(povprecja.predmeti.programi.PO$program.studentov)) {
kvantili.predmeti.program <- povprecja.predmeti.programi.PO[povprecja.predmeti.programi.PO$program.studentov == program &
(povprecja.predmeti.programi.PO$N_anket > 0 | povprecja.predmeti.programi.PO$N_anket_po_izpitu > 0),
c("predmet.sifra","N_anket","N_anket_po_izpitu","program.studentov","program.studentov.ime",
paste0(vars.predmet$cont$vars[8:20],"_mean"),
"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa","predmet.ocena.krediti_mean",
"predmet.ocena.kompetence1_mean")]
for (var in c(paste0(vars.predmet$cont$vars[8:20],"_mean"),"predmet.ocena.SKUPAJ.po","predmet.ocena.SKUPAJ.praksa")) {
kvantili.predmeti.program[[var]] <- kvantRang(kvantili.predmeti.program[[var]])
}
for (var in c("N_anket","N_anket_po_izpitu")) {
kvantili.predmeti.program[[var]] <- kvantRang1(kvantili.predmeti.program[[var]])
}
for (var in c("predmet.ocena.krediti_mean","predmet.ocena.kompetence1_mean")) {
kvantili.predmeti.program[[var]] <- kvantRang2(kvantili.predmeti.program[[var]])
}
kvantili.predmeti.programi.PO <- rbind(kvantili.predmeti.programi.PO, kvantili.predmeti.program)
}
# /quantiles by programme/ #
#################################
## statistics for methodology ## (Glej izpis za izvajalca, in sicer poglavje Metodološko pojasnilo)
#################################
data.predmeti <- merge(data.predmeti, sifrant[!duplicated(sifrant$IDP), c("IDP","SEMESTER_IZV")],
by.x="predmet.sifra", by.y="IDP", all.x=TRUE)
## ZIMSKI SEMESTER ##
metod_XXX <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDP)) # število predmetov
metod_YYY <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDPEDAGOGA)) # število pedagogov
metod_ZZZ <- length(unique(studenti$"ID_studenta_.MD5.")) # Število študentov
metod_UUU <- nrow(subset(sifrant, SEMESTER_IZV %in% prvi_semester)) # število izvedb..
metod_VVV <- metod_XXX # number of prepared evaluations for courses
metod_RRR <- metod_UUU # number of prepared evaluations for lecturers
# ANKETA PRED izpitom
metod_X1 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_anket, na.rm=TRUE) # no. evaluations answers
metod_X2 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_zavrnjenih, na.rm=TRUE) # no. evaluations rejected
metod_X3 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_neodzivnih, na.rm=TRUE) # no. evaluations didn't start
method_xsum<-metod_X1+metod_X2+metod_X3
metod_X4 <- sum((aggregate(subset(data.predmeti, SEMESTER_IZV %in% prvi_semester)$veljavna, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% prvi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x == 0) & (aggregate(subset(data.predmeti, SEMESTER_IZV %in% prvi_semester)$zavrnjena, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% prvi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x > 0)) # no. students rejected all evaluations
metod_X5 <- sum(!(unique(studenti$"ID_studenta_.MD5.") %in% data_pred_izpitom[data_pred_izpitom[[navodila["predmet.sifra","lokacije.predmet"]]] %in% subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDP, navodila["student.sifra","lokacije.student"]])) # no. students with no started evaluations
metod_X6 <- length(unique(subset(data.predmeti, veljavna & SEMESTER_IZV %in% prvi_semester)$student.sifra)) # no. students participated in at least 1 evaluation
metodPREDSum <- metod_X4 + metod_X5 + metod_X6
metod_X4.pct <- round((metod_X4/metodPREDSum) * 100, 0) # Percentage of students rejected all evaluations
metod_X5.pct <- round((metod_X5/metodPREDSum) * 100, 0) # Percentage of students with no started evaluations
metod_X6.pct <- round((metod_X6/metodPREDSum) * 100, 0) # Percentage od students participated in at least 1 evaluation
# ANKETA PO izpitu
metod_Y1 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_anket_po_izpitu, na.rm=TRUE) # no. evaluations answers
metod_Y2 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_zavrnjenih_po_izpitu, na.rm=TRUE) # no. evaluations rejected
metod_Y3 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester)$N_neodzivnih_po_izpitu, na.rm=TRUE) # no. evaluations didn't start
metod_Y4 <- sum((aggregate(subset(data.predmeti, SEMESTER_IZV %in% prvi_semester)$veljavna_po_izpitu, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% prvi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x == 0) & (aggregate(subset(data.predmeti, SEMESTER_IZV %in% prvi_semester)$zavrnjena_po_izpitu, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% prvi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x > 0)) # no. students rejected all evaluations
metod_Y5 <- sum(!(unique(studenti$"ID_studenta_.MD5.") %in% data_po_izpitu[data_po_izpitu[[navodila["predmet.sifra","lokacije.predmet"]]] %in% subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDP, navodila["student.sifra","lokacije.student"]])) # no. students with no started evaluations
metod_Y6 <- length(unique(subset(data.predmeti, veljavna_po_izpitu & SEMESTER_IZV %in% prvi_semester)$student.sifra)) # no. students participated in at least 1 evaluation
metodPOSum <- metod_Y4 + metod_Y5 + metod_Y6
metod_Y4.pct <- round((metod_Y4/metodPOSum) * 100, 0) # Percentage of students rejected all evaluations
metod_Y5.pct <- round((metod_Y5/metodPOSum) * 100, 0) # Percentage of students with no started evaluations
metod_Y6.pct <- round((metod_Y6/metodPOSum) * 100, 0) # Percentage od students participated in at least 1 evaluation
## //ZIMSKI// ##
## LETNI/CELOLETNI (drugi semester) ##
metod_XXX1 <- length(unique(subset(sifrant, SEMESTER_IZV %in% drugi_semester)$IDP)) # število predmetov
metod_YYY1 <- length(unique(subset(sifrant, SEMESTER_IZV %in% drugi_semester)$IDPEDAGOGA)) # število pedagogov
metod_ZZZ1 <- length(unique(studenti$"ID_studenta_.MD5.")) # število študentov
metod_UUU1 <- nrow(subset(sifrant, SEMESTER_IZV %in% drugi_semester)) # število izvedb..
# ANKETA PRED izpitom
metod_X11 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_anket, na.rm=TRUE) # no. evaluations answers
metod_X21 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_zavrnjenih, na.rm=TRUE) # no. evaluations rejected
metod_X31 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_neodzivnih, na.rm=TRUE) # no. evaluations didn't start
method_xsum1 <- metod_X11 + metod_X21 + metod_X31
if (length(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$veljavna > 0)) { # V primeru da ni vrednosti naj bodo v tabela 0 in ne NA vrednosti
metod_X41 <- sum((aggregate(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$veljavna, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% drugi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x == 0) & (aggregate(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$zavrnjena, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% drugi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x > 0)) # no. students rejected all evaluations
} else {metod_X41 <- 0}
metod_X51 <- sum(!(unique(studenti$"ID_studenta_.MD5.") %in% data_pred_izpitom[data_pred_izpitom[[navodila["predmet.sifra","lokacije.predmet"]]] %in% subset(sifrant, SEMESTER_IZV %in% drugi_semester)$IDP, navodila["student.sifra","lokacije.student"]])) # no. students with no started evaluations
metod_X61 <- length(unique(subset(data.predmeti, veljavna & SEMESTER_IZV %in% drugi_semester)$student.sifra)) # no. students participated in at least 1 evaluation
metodPREDSum_2 <- metod_X41 + metod_X51 + metod_X61
metod_X41.pct<-round((metod_X41/metodPREDSum_2) * 100, 0) # Percentage of students rejected all evaluations
metod_X51.pct<-round((metod_X51/metodPREDSum_2) * 100, 0) # Percentage of students with no started evaluations
metod_X61.pct<-round((metod_X61/metodPREDSum_2) * 100, 0) # Percentage od students participated in at least 1 evaluation
# ANKETA PO izpitu
metod_Y11 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_anket_po_izpitu, na.rm=TRUE) # no. evaluations answers
metod_Y21 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_zavrnjenih_po_izpitu, na.rm=TRUE) # no. evaluations rejected
metod_Y31 <- sum(subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester)$N_neodzivnih_po_izpitu, na.rm=TRUE) # no. evaluations didn't start
if (length(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$veljavna_po_izpitu > 0)) {
metod_Y41 <- sum((aggregate(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$veljavna_po_izpitu, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% drugi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x == 0) & (aggregate(subset(data.predmeti, SEMESTER_IZV %in% drugi_semester)$zavrnjena_po_izpitu, by=data.predmeti[data.predmeti$SEMESTER_IZV %in% drugi_semester, "student.sifra", drop=FALSE], FUN=sum, na.rm=TRUE)$x > 0)) # no. students rejected all evaluations
} else {metod_Y41 <- 0}
metod_Y51 <- sum(!(unique(studenti$"ID_studenta_.MD5.") %in% data_po_izpitu[data_po_izpitu[[navodila["predmet.sifra","lokacije.predmet"]]] %in% subset(sifrant, SEMESTER_IZV %in% drugi_semester)$IDP, navodila["student.sifra","lokacije.student"]])) # no. students with no started evaluations
metod_Y61 <- length(unique(subset(data.predmeti, veljavna_po_izpitu & SEMESTER_IZV %in% drugi_semester)$student.sifra)) # no. students participated in at least 1 evaluation
metodPOSum_2 <- metod_Y41 + metod_Y51 + metod_Y61
metod_Y41.pct <- round((metod_Y41/metodPOSum_2) * 100, 0) # Percentage of students rejected all evaluations
metod_Y51.pct <- round((metod_Y51/metodPOSum_2) * 100, 0) # Percentage of students with no started evaluations
metod_Y61.pct <- round((metod_Y61/metodPOSum_2) * 100, 0) # Percentage od students participated in at least 1 evaluation
## //LETNI/CELOLETNI// ##
# answers
metod_XX <- round(FDVpredmeti["prvi_semester", "sodelujocih.pct"]) # Delež študentov FDV, ki so v sodelovali v anketi PRED (v prvem semestru)
metod_YY <- round(FDVpredmeti["prvi_semester", "zavrnjenih.pct"]) # Delež študentov FDV, ki so sodelovanje v anketi PRED zavrnili (v prvem semestru)
metod_ZZ <- round(FDVpredmeti["prvi_semester", "neodzivnih.pct"]) # Delež študentov FDV, ki ki k anketi PRED niso pristopili (v prvem semestru)
metod_ZZ1 <- round(FDVpredmeti["prvi_semester", "sodelujocih.pct_po_izpitu"]) # -"- Anketa PO
metod_ZZ2 <- round(FDVpredmeti["prvi_semester", "zavrnjenih.pct_po_izpitu"]) # -"- Anketa PO
metod_ZZ3 <- round(FDVpredmeti["prvi_semester", "neodzivnih.pct_po_izpitu"]) # -"- Anketa PO
metod_XX1 <- round(FDVpredmeti["drugi_semester", "sodelujocih.pct"])
metod_XX2 <- round(FDVpredmeti["drugi_semester", "zavrnjenih.pct"])
metod_XX3 <- round(FDVpredmeti["drugi_semester", "neodzivnih.pct"])
metod_ZZ1L <- round(FDVpredmeti["drugi_semester", "sodelujocih.pct_po_izpitu"])
metod_ZZ2L <- round(FDVpredmeti["drugi_semester", "zavrnjenih.pct_po_izpitu"])
metod_ZZ3L <- round(FDVpredmeti["drugi_semester", "neodzivnih.pct_po_izpitu"])
# Če ni podatkov za drugi semester potem spremenljivkam pripiši vrednost 0 (da v tabelah v poglavju Splošna metodologija ne pojavljajo NA)
if (is.na(round(FDVpredmeti["drugi_semester", "ST_STUD"])) & is.na(round(FDVpredmeti["drugi_semester", "N_anket"]))) {
metod_XX1 <- 0
metod_XX2 <- 0
metod_XX3 <- 0
metod_ZZ1L <- 0
metod_ZZ2L <- 0
metod_ZZ3L <- 0
}
# Tekst v poglavju Metodološko pojasnilo
# da npr. v I. semestru vsak predmet izvaja 2.2 (:RRR:/:XXX:) pedagogov 266/123
method_IZR <- round(metod_RRR/metod_XXX, digits = 1)
#vsak pedagog pa v povprečju izvaja 2.5 (266/105) predmetov.
method_IZR1 <- round(metod_RRR/metod_YYY, digits = 1)
#Trenutni datum oz stanje izvoza, ki se izpiše pod tabelo v poglavju: Metodološko pojasnilo
date <- format(Sys.time(), "%d.%m.%Y")
# Številke, v poglavju SPLOŠNA METODOLOGIJA (glej npr.
# ne glede na stopnjo odgovorov je povprečno zadovoljstvo okoli 4.2)
# Najprej za Dodiplomski študij:
# Povprečje komponent predmetov po študijskih programih (anketa PRED izpitom) sortirano po povprečju \\textbf{Skupaj}"
stopnja_program <- merge(povprecja.predmeti[c("predmet.sifra","STOPNJA")],povprecja.predmeti.programi[c("predmet.sifra",paste0(vars.predmet$cont$vars,"_mean"),
paste0(vars.predmet$krediti$vars,"_mean"),"program.studentov",
"program.studentov.ime","N_anket","N_anket_po_izpitu" )], by="predmet.sifra", sort=FALSE)
stopnja_program <- stopnja_program[stopnja_program$N_anket >=minEnot, c("predmet.sifra","program.studentov","program.studentov.ime","STOPNJA")]
if (nrow(stopnja_program) > 0) {
stopnja_program <- aggregate(stopnja_program$predmet.sifra,
by=stopnja_program[c("program.studentov","program.studentov.ime","STOPNJA")],
function(x) length(unique(x)))
} else {stopnja_program <- stopnja_program}
stopnja_program.pred <- merge(test.pred, stopnja_program,
by.x="student.program.ime",
by.y="program.studentov.ime",
all=TRUE)
program.1stopnja <- aggregate(data.predmeti[vars.predmet.vars],
by=data.predmeti[c("student.program.sifra","student.program.ime")],
FUN=mean,
na.rm=TRUE)
program.1stopnja <- cbind(program.1stopnja, predmet.ocena.SKUPAJ=rowMeans(program.1stopnja[vars.predmet.vars], na.rm=TRUE))
stopnja_program1 <- stopnja_program
colnames(stopnja_program1)[4] <- "N_anket"
rownames(stopnja_program1) <- stopnja_program1[rownames(stopnja_program1),"student.program.ime"]
if (nrow(stopnja_program1) > 0) {
program_BD_pred.skupaj <- merge(stopnja_program1, program.1stopnja,
by.x=c("program.studentov","program.studentov.ime"),
by.y=c("student.program.sifra","student.program.ime"), all=TRUE, sort=FALSE)
program_BD_pred.skupaj <- subset(program_BD_pred.skupaj, STOPNJA==1)
program_BD_pred.skupaj <- program_BD_pred.skupaj[, !(colnames(program_BD_pred.skupaj) %in% c("STOPNJA"))]
} else {program_BD_pred.skupaj <- stopnja_program1}
# Izračunamo povprečje, ki je potem zapisano v poglavju SPLOŠNA METODOLOGIJA
if (nrow(program_BD_pred.skupaj) > 0) {
method_povp1 <- round(colMeans(program_BD_pred.skupaj[11:ncol(program_BD_pred.skupaj)], na.rm=TRUE), 1)
} else {method_povp1 <- 0}
# ŠE ZA Podiplomski študij:
# Povprečje komponent predmetov po študijskih programih (anketa PRED izpitom) sortirano po povprečju \\textbf{Skupaj}"
stopnja_program_podipl <- merge(povprecja.predmeti[c("predmet.sifra","STOPNJA")],
povprecja.predmeti.programi[c("predmet.sifra",
paste0(vars.predmet$cont$vars,"_mean"),
paste0(vars.predmet$krediti$vars,"_mean"),
"program.studentov","program.studentov.ime",
"N_anket","N_anket_po_izpitu" )],
by="predmet.sifra", sort=FALSE)
stopnja_program_podipl <- stopnja_program_podipl[stopnja_program_podipl$N_anket >=minEnot,
c("predmet.sifra","program.studentov","program.studentov.ime","STOPNJA")]
if (nrow(stopnja_program_podipl) > 0) {
stopnja_program_podipl <- aggregate(stopnja_program_podipl$predmet.sifra,
by=stopnja_program_podipl[c("program.studentov","program.studentov.ime","STOPNJA")],
function(x) length(unique(x)))
}
stopnja_program_podipl.pred <- merge(test.pred, stopnja_program_podipl,
by.x="student.program.ime",
by.y="program.studentov.ime", all=TRUE)
program.2stopnja <- aggregate(data.predmeti[vars.predmet.vars],
by=data.predmeti[c("student.program.sifra","student.program.ime")],
FUN=mean, na.rm=TRUE)
program.2stopnja <- cbind(program.2stopnja, predmet.ocena.SKUPAJ=rowMeans(program.2stopnja[vars.predmet.vars], na.rm=TRUE))
stopnja_program_podipl1 <- stopnja_program_podipl
colnames(stopnja_program_podipl1)[4] <- "N_anket"
rownames(stopnja_program_podipl1) <- stopnja_program_podipl1[rownames(stopnja_program_podipl1),"student.program.ime"]
if (nrow(stopnja_program_podipl1) > 0) {
program_BD_pred.podipl <- merge(stopnja_program_podipl1, program.2stopnja,
by.x=c("program.studentov","program.studentov.ime"),
by.y=c("student.program.sifra","student.program.ime"), all=TRUE, sort=FALSE)
program_BD_pred.podipl <- subset(program_BD_pred.podipl, STOPNJA==2)
program_BD_pred.podipl <- program_BD_pred.podipl[, !(colnames(program_BD_pred.podipl) %in% c("STOPNJA"))]
} else{program_BD_pred.podipl <- stopnja_program_podipl1}
# Izračunamo povprečje, ki je potem zapisano v poglavju SPLOŠNA METODOLOGIJA
if (nrow(program_BD_pred.podipl) > 0) {
method_povp2 <- round(colMeans(program_BD_pred.podipl[11:ncol(program_BD_pred.podipl)],na.rm=TRUE), 1)
} else {method_povp2 <- 0}
#Podatki, ki generirajo vrednosti v latex datoteki metodolosko.pojasnilo. Glej mapo latexkosi
# S funkcijo scan preberemo tex. datoteko metodolosko.pojasnilo.tex
tex.okvir <- scan("Evalvacija/latexkosi/metodolosko.pojasnilo.tex", character(0), sep = "\n", quiet = TRUE, encoding = 'UTF-8')
tex.okvir <- gsub(pattern=":XXX:", replacement=metod_XXX, x=tex.okvir)
tex.okvir <- gsub(pattern=":YYY:", replacement=metod_YYY, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZZ:", replacement=metod_ZZZ, x=tex.okvir)
tex.okvir <- gsub(pattern=":UUU:", replacement=metod_UUU, x=tex.okvir)
tex.okvir <- gsub(pattern=":VVV:", replacement=metod_VVV, x=tex.okvir)
tex.okvir <- gsub(pattern=":RRR:", replacement=metod_RRR, x=tex.okvir)
tex.okvir <- gsub(pattern=":X1:", replacement=method_xsum, x=tex.okvir)
tex.okvir <- gsub(pattern=":UUU1:", replacement=metod_UUU1, x=tex.okvir)
tex.okvir <- gsub(pattern=":XXX1:", replacement=metod_XXX1, x=tex.okvir)
tex.okvir <- gsub(pattern=":YYY1:", replacement=metod_YYY1, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZZ1:", replacement=metod_ZZZ1, x=tex.okvir)
tex.okvir <- gsub(pattern=":XX:", replacement=metod_XX, x=tex.okvir)
tex.okvir <- gsub(pattern=":YY:", replacement=metod_YY, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ:", replacement=metod_ZZ, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ1:", replacement=metod_ZZ1, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ2:", replacement=metod_ZZ2, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ3:", replacement=metod_ZZ3, x=tex.okvir)
# DELEŽ študentov (PRVI SMESTER)
## ANKETA PRED
# no. students rejected all evaluations
tex.okvir <- gsub(pattern=":metod_X4.pct:", replacement=metod_X4.pct, x=tex.okvir)
# no. students with no started evaluations
tex.okvir <- gsub(pattern=":metod_X5.pct:", replacement=metod_X5.pct, x=tex.okvir)
# no. students participated in at least 1 evaluation
tex.okvir <- gsub(pattern=":metod_X6.pct:", replacement=metod_X6.pct, x=tex.okvir)
## ANKETA PO
# no. students rejected all evaluations
tex.okvir <- gsub(pattern=":metod_Y4.pct:", replacement=metod_Y4.pct, x=tex.okvir)
# no. students with no started evaluations
tex.okvir <- gsub(pattern=":metod_Y5.pct:", replacement=metod_Y5.pct, x=tex.okvir)
# no. students participated in at least 1 evaluation
tex.okvir <- gsub(pattern=":metod_Y6.pct:", replacement=metod_Y6.pct, x=tex.okvir)
# DRUGI SEMESTER ANKETA PRED IN PO IZPITU
tex.okvir <- gsub(pattern=":XX1:", replacement=metod_XX1, x=tex.okvir)
tex.okvir <- gsub(pattern=":XX2:", replacement=metod_XX2, x=tex.okvir)
tex.okvir <- gsub(pattern=":XX3:", replacement=metod_XX3, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ1L:", replacement=metod_ZZ1L, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ2L:", replacement=metod_ZZ2L, x=tex.okvir)
tex.okvir <- gsub(pattern=":ZZ3L:", replacement=metod_ZZ3L, x=tex.okvir)
tex.okvir <- gsub(pattern=":Y1:", replacement=method_xsum1, x=tex.okvir)
tex.okvir <- gsub(pattern=":IZR:", replacement=method_IZR, x=tex.okvir)
tex.okvir <- gsub(pattern=":IZR1:", replacement=method_IZR1, x=tex.okvir)
tex.okvir <- gsub(pattern=":IME:", replacement=fakulteta, x=tex.okvir)
# Datum izvoza podatkov (tabele v metodologiji)
tex.okvir <- gsub(pattern=":DATUM:", replacement=date, x=tex.okvir)
# DELEŽ študentov (DRUGI SMESTER)
## ANKETA PRED
# no. students rejected all evaluations
tex.okvir <- gsub(pattern=":metod_X41.pct:", replacement=metod_X41.pct, x=tex.okvir)
# no. students with no started evaluations
tex.okvir <- gsub(pattern=":metod_X51.pct:", replacement=metod_X51.pct, x=tex.okvir)
# no. students participated in at least 1 evaluation
tex.okvir <- gsub(pattern=":metod_X61.pct:", replacement=metod_X61.pct, x=tex.okvir)
## ANKETA PO
# no. students rejected all evaluations
tex.okvir <- gsub(pattern=":metod_Y41.pct:", replacement=metod_Y41.pct, x=tex.okvir)
# no. students with no started evaluations
tex.okvir <- gsub(pattern=":metod_Y51.pct:", replacement=metod_Y51.pct, x=tex.okvir)
# no. students participated in at least 1 evaluation
tex.okvir <- gsub(pattern=":metod_Y61.pct:", replacement=metod_Y61.pct, x=tex.okvir)
#Poglavje SPLOŠNA METODOLOGIJA
#Številka oz povprečji za dodiplomski in podpilomski študij za anketo PRED izpitom
tex.okvir <- gsub(pattern=":DODI:", replacement=method_povp1, x=tex.okvir)
tex.okvir <- gsub(pattern=":PODI:", replacement=method_povp2, x=tex.okvir)
# /statistics for methodology/ #
# Dodatno Pojasnilo za tabele: glej skripto koda-izvajalec_predmet.r
# Opomba za Uszreznost KT
KTust <- "{\\footnotesize \\textit{* Vrednost pod 3.0 pomeni, da je predmet glede
na \\guillemotright število kreditnih točk\\guillemotleft \\ zahteval podpovprečno
število ur, vrednost nad 3.0 pa pomeni nadpovprečno število ur.
{\\color{Orange}\\textbf{Oranžno}} so označena opazna
odstopanja ({\\color{Orange}\\textbf{2.4-2.6}}) in ({\\color{Orange}\\textbf{3.4-3.6}}),
{\\color{BrickRed}\\textbf{rdeče}} pa izrazita
odstopanja (pod {\\color{BrickRed}\\textbf{2.4}}) in (nad {\\color{BrickRed}\\textbf{3.6}}).
\\newline ** Program je izbran na podlagi najvišjega števila odgovorov. Ocene ostalih programov,
v katere so vpisani študenti, so v poglavju \\textbf{Sumarne ocene študijskih programov}.}}"
# Vprašanje komponente Kompetence
Kompetence.note <- "{\\footnotesize \\textit{* \\guillemotright Tekst vprašanja: V kolikšni meri
ste pri predmetu pridobili pričakovane \\textbf{kompetence}? \\guillemotleft }}"
# Kvantilni rangi
kvan.pojas <- "{\\footnotesize \\textit{* Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\ je kvantilni rang
za odgovarjajoče vrednosti, vendar ni obarvan, saj gre za administrativni podatek.}}"
kvan.pojas1 <- "{\\footnotesize \\textit{* Gre za vse predmete z vsaj 4 odgovori (tudi predmete drugih programov,
če so bili izbirni), ki so jih vpisali študenti določenega programa. \\newline ** Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\
je kvantilni rang za odgovarjajoče vrednosti v tabeli 1.1 (položaj predmeta med vsemi predmeti določenega programa),
vendar ni obarvan, saj gre za administrativni podatek.}}"
kvan.pojas3 <- c(paste0("{\\footnotesize \\textit{* Vrednost za \\guillemotright št.odgovorov\\guillemotleft\\ je kvantilni rang
za odgovarjajoče vrednosti v tabeli 1.3 (položaj IPP med vsemi IPP določenega programa v pogledu števila vpisanih študentov).
\\newline ** Gre za vse predmete z vsaj 4 odgovori
(vključno s predmeti drugih programov, če so bili izbirni), ki so jih vpisali študenti določenega programa.
\\newline *** \\guillemotright št. IPP\\guillemotleft \\ - število vseh izvajalcev pri predmetih na določenem programu
(v povprečju ima vsak predmet ", method_IZR ," izvajalca).}}"))
# NOT USING THIS NOW
# Pojasnilo za izvajalca pri predmetu: študijski program
# pojasIZV.tmp <- c(paste0("{\\footnotesize \\textit{* Prikazani so samo programi, pri katerih je imel izvajalec vsaj 4 ocene.
# \\newline ** \\guillemotright št. IPP\\guillemotleft \\ - število vseh izvajalcev pri predmetih na določenem programu
# (v povprečju ima vsak predmet ", method_IZR ," izvajalca).}}"))
# Pojasnilo za izvajalca
# pojasPRED.tmp <- c(paste0("{\\footnotesize \\textit{* Prikazani so samo programi, pri katerih je imel izvajalec vsaj 4 ocene.}}"))
######DODATNI PODATKI ZA TABELE ANALIZA IZVAJALCA PRI PREDMETU PO PROGRAMIH IN LETNIKIH: glej skripto koda-izvajalec_predmet.r
proggIZ.tmp <- povprecja.izvajalci.programi[povprecja.izvajalci.programi$N_anket >=minEnot, c("predmet.sifra","program.studentov","program.studentov.ime")]
if (nrow(proggIZ.tmp) > 0) {
proggIZ.tmp <- aggregate(proggIZ.tmp$predmet.sifra, by = proggIZ.tmp[c("program.studentov","program.studentov.ime")], function(x) length(x))
izv.predmet <- merge(test2, proggIZ.tmp, by.x="student.program.ime", by.y = "program.studentov.ime", all = TRUE)
} else {izv.predmet <- proggIZ.tmp}
######DODATNI PODATKI ZA TABELE ANALIZE PREDMETA PO PROGRAMIH IN LETNIKIH - ANKETA PRED
proggPRED.tmp <- povprecja.predmeti.programi[povprecja.predmeti.programi$N_anket >=minEnot,
c("predmet.sifra","program.studentov","program.studentov.ime")]
if (nrow(proggPRED.tmp) > 0) {
proggPRED.tmp <- aggregate(proggPRED.tmp$predmet.sifra, by = proggPRED.tmp[c("program.studentov","program.studentov.ime")],
function(x) length(unique(x)))
pred.predmet <- merge(test.pred, proggPRED.tmp,
by.x = "student.program.ime", by.y = "program.studentov.ime", all = TRUE)
} else {pred.predmet <- proggPRED.tmp}
###// ANKETA PRED //###
######DODATNI PODATKI ZA TABELE ANALIZE PREDMETA PO PROGRAMIH IN LETNIKIH - ANKETA PO
test.po <- aggregate(data.predmeti.PO[vars.predmet$cont$po], by = data.predmeti.PO[c("student.program.ime")], FUN = mean, na.rm = TRUE)
test.po <- cbind(test.po, predmet.ocena.SKUPAJ = rowMeans(test.po[vars.predmet$cont$po[-1]], na.rm = TRUE))
test.po <- round_df(test.po, 1)
proggPO.tmp <- povprecja.predmeti.programi.PO[povprecja.predmeti.programi.PO$N_anket_po_izpitu >=minEnot, c("predmet.sifra","program.studentov","program.studentov.ime")]
if (nrow(proggPO.tmp)>0) {
proggPO.tmp <- aggregate(proggPO.tmp$predmet.sifra, by=proggPO.tmp[c("program.studentov","program.studentov.ime")], function(x) length(unique(x)))
proggPO.tmp1 <- proggPO.tmp
colnames(proggPO.tmp1)[3] <- "N_anket"
po.predmet <- merge(test.po, proggPO.tmp, by.x = "student.program.ime", by.y = "program.studentov.ime", all = TRUE)
} else {proggPO.tmp <- NULL
proggPO.tmp1 <- NULL
po.predmet <- NULL
}
## //ANKETA PO// ##
#FAKULTETA: PROGRAMI-ANKETA PRED IZPITOM
# Povprečja komponent predmetov ankete PRED izpitom po študijskih programih
progMeanPRED.tmp <- aggregate(data.predmeti[vars.predmet.vars],
by = data.predmeti[c("student.program.sifra","student.program.ime")],
FUN = mean, na.rm = TRUE)
progMeanPRED.tmp <- cbind(progMeanPRED.tmp, predmet.ocena.SKUPAJ = rowMeans(progMeanPRED.tmp[vars.predmet.vars], na.rm = TRUE))
proggPRED.tmp1 <- proggPRED.tmp
colnames(proggPRED.tmp1)[3] <- "N_anket"
if (nrow(proggPRED.tmp1) > 0) {
progMeanPRED.n <- merge(proggPRED.tmp1, progMeanPRED.tmp,
by.x = c("program.studentov","program.studentov.ime"),
by.y = c("student.program.sifra","student.program.ime"), all = TRUE, sort = FALSE)
} else {progMeanPRED.n <- proggPRED.tmp1}
#Dodajanje povprečja programa k izvajalcu na konec
#Povprečja programov anketa pred izpitom 1 STOPNJAA
program_1stopnja <- proggPRED.tmp
########################################################
### analiza predmeta po smereh in letnikih študentov ###
#tabelaBy (ki jo uporabimo v koda-izvajalec_predmet.r)
#######################################################
# Anketa PRED
# Pojasnilo funkcije tabelaby1: glej skripto koda-izvajalec_predmet.r
# Ločimo komponente, na komponente, ki so v anketi PRED izpitom in anketi PO izpitu, saj ji bomo zapisali v ločeni tabeli
vars.predmet$cont$ime.kratko1 <- vars.predmet$cont$ime.kratko[-c(12,13,14,15,16,17,18,19,20)]
vars.predmet$cont$decimalke1 <- vars.predmet$cont$decimalke[-c(12,13,14,15,16,17,18,19,20)]
vars.predmet$cont$pobarvanka1 <- vars.predmet$cont$pobarvanka[-c(12,13,14,15,16,17,18,19,20)]
# Komponente PRED izpitom zapišemo v vektorje, ki bodo v Latex tabelah
komponente.predmeta.PRED <- vars.predmet$cont$vars1[-c(8,9,10,11)] # Komponente: Zadovoljstvo, Usklajenost, Samostojnost, ...itd
imena_stolpcevPRED <- as.character(vars.predmet$cont$ime.kratko1[-c(8,9,10,11)]) # Komponente, ki bodo kot imena stolpcev v tabeli tabelaBy1
decimalno_mestoPRED <- as.numeric(vars.predmet$cont$decimalke1[-c(8,9,10,11)]) # Decimalke: zakoroževanje povprečnih vrednosti komponent na 1 decimalno mesto
pobarvanka.PRED <- as.character(vars.predmet$cont$pobarvanka1[-c(8,9,10,11)]) # Pobarvanka: mejne vrednosti "3,4,Inf,Inf", ki barvajo povprečja v tabelah
# Pojasnilo funkcije tabelaby2: glej skripto koda-izvajalec_predmet.r
# Anketa PO
komponente.predmeta.PO <- vars.predmet$cont$vars1[-c(1,2,3,4,5,6,7)] # Komponente za anketo PO izpitu: Kompetence, Vsebine, naloge, Kriteriji + Ustreznost kreditnih točk
imena_stolpcevPO <- as.character(vars.predmet$cont$ime.kratko1[-c(1,2,3,4,5,6,7)]) # Komponente bodo predstavljale imena stolpcev v tabelah
decimalno_mestoPO <- as.numeric(vars.predmet$cont$decimalke1[-c(1,2,3,4,5,6,7)])
pobarvanka.PO <- as.character(vars.predmet$cont$pobarvanka1[-c(1,2,3,4,5,6,7)])
# Iz stringa povlečemo le števila
# Pride v poštev v tabelah v povzetku, kjer so negativne vrednosti za delež nesodelujočih
#library(stringr)
#numextract <- function(string){
# str_extract(string, "\\-*\\d+\\.*\\d*")
#}
##############################################################
# KOMENTARJI PRI POVPREČJIH IZVAJALCEV HABILITACIJSKA KOMISIJA
# K povprečni ocenam izvajalcev dodamo še komentarje študentov
# Uporabimo le vpimeru, da delamo poročila za habilitacijsko komisijo
Habilitacijska <- FALSE
if (Habilitacijska == TRUE) {
povprecja.izvajalci <- merge(povprecja.izvajalci, data.izvajalci[c("izvajalec.sifra","predmet.sifra","izvajalec.komentar.dobro","izvajalec.komentar.slabo")],
by=c("izvajalec.sifra","predmet.sifra"), all = T, sort = F)
# Ustvarimo csv datoteki, ki ju nato uporabimo za generiranje poročil TRENDOV in HABILITACIJSKE KOMISIJE
write.csv2(povprecja.izvajalci,"povprecja.izvajalci.csv")
write.csv2(povprecja.predmeti,"povprecja.predmeti.csv")
}
#############################################################
povprecja.predmeti <- merge(povprecja.predmeti, poNLurkerji, by = "predmet.sifra", all = TRUE, sort = FALSE)
# povprecja.izvajalci <- subset(povprecja.izvajalci, !is.na(ST_STUD))
#
# povprecja.predmeti <- subset(povprecja.predmeti, !is.na(ST_STUD))