# Created by Miha 2015. Updated by Miha 22.7.2019 in parts in progress!!!! # # PREVERI!!!!!!!!!!! #-------------------- SET WORKING DIREKTORY -----------------------# # Check which PC we are working from: WORk OR HOME fpath <- file.path("C:/MIHA DELO/FDV PROJEKT EVALVACIJE UL/EVLAVACIJE 2018_2019 UPDATED") if (!dir.exists(fpath)){ output_dir <- "E:/Work/Vasja Vehovar/EVLAVACIJE 2018_2019 UPDATED" setwd(output_dir) } else { setwd(fpath) } #------------------ //SET WORKING DIREKTORY// ---------------------# ######################################### # KRATEK OPIS STRUKTURE POROČIL IN KODE # ######################################### # 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. #' @param Komponente za izvajalca so: Kakovost, Pripravljenost, Razumljivost, Zanimivost, Kritičnost, Korektnost #' @param Komponente predmeta (ANKETA PRED): Zadovoljstvo, Usklajenost, Samostojnost, Literatura, Obveščenost, Info. na spletu, Preverjanje #' @param Komponente predmeta (ANKETA PO):Vsebine, naloge, Ocenjevanje, Kompetence, Ustreznost Kreditnih točk ######## # OSNOVNA SKIPTA # #================# #' skripta: @name 00_dataanalysis.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 @nam07_PDF_izvajalec.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. #----------------------- //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 trenutno ne rabimo #params <- commandArgs(trailingOnly = TRUE) #ID <- params[1] #---------------------- //1KA strežnik// ---------------------# #------------- List packages we need -----------------# # List packages we want # install packages from CRAN p_needed <- c("tools", "psych", "Hmisc", "reports", "fmsb", "car", "Cairo", "openxlsx", "qpcR", "rio", "dplyr") # import data (trendi fakulteta) ## Install new packages packages <- rownames(installed.packages()) p_to_install <- p_needed[!(p_needed %in% packages)] if (length(p_to_install) > 0) { install.packages(p_to_install) } # Load the packages lapply(p_needed, require, character.only = TRUE) #------------ //List packages we need// --------------# #---------------------------- DEFINE FACULTY ID -------------------------------# # 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. # Ko se koda prenese na strežnik ID zakomentiramo, saj ga Peter ne Potrebuje ID <- 3000025 fakulteta <- "" ime.fakultete <- "" source("Evalvacija/R/02_IDfaculty.R", encoding = "UTF-8") #-------------------------- //DEFINE FACULTY ID// -----------------------------# # ----------------------------- CUSTOM DEFINED FUNCTIONS ------------------------------# # 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 @name funkcije.r in v @name tex. datotekah (npr za izvajalca: @a-glava.tex ) #' @POMEMBNO!!! v 01_funkcije.r opredelimo minimalno število enot na podlagi katerega #' prikažemo vrednosti povprečij. source('Evalvacija/R/funkcije/01_funkcije.r', encoding = "UTF-8") #' Funkcije, ki vodo skrbele za @Agregate in Trende source('Evalvacija/R/funkcije/agregati_funkcije.r', encoding = "UTF-8") # --------------------------- //CUSTOM DEFINED FUNCTIONS// ----------------------------# #--------- WARNINGS ----------# 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 #------- //WARNINGS// --------# # --------------------------------- FOLDERS FOR OUTPUT ---------------------------------------# # Ustvarimo mapo, kjer se bodo shranjevale slike (grafi, histogrami, barploti) # PDF Slike grafov izvajalca dir.create(paste0("Evalvacija/results/",fakulteta), showWarnings = FALSE) dir.create(paste0("Evalvacija/results/",fakulteta,"/part-izvajalec-slike"), showWarnings = FALSE) # PDF Slike grafov za predmet dir.create(paste0("Evalvacija/results/",fakulteta,"/part-predmet-slike"), showWarnings = FALSE) # Mapa, kamor se bodo shranjevali PDF-ji Študijskih praks (praksa, trendi prakse za članico) dir.create(paste0("Evalvacija/results/",fakulteta,"/praksa"), showWarnings = FALSE) # Folder kamor bomo shranjevlai podatke za agregate, ki pridejo v upoštev pri poročilu # za fakulteto in program dir.create(paste0("Evalvacija/results/",fakulteta,"/Agregati"), showWarnings = FALSE) # Folder, kjer se bodo generirali Trendi za izvajalca dir.create(paste0("Evalvacija/results/",fakulteta,"/Trendi"), showWarnings = FALSE) # Trendi za habilitacijsko komisijo na nivoju izvaajalca # Gre za enako poročilo kot v primeru Trendov z aizvajalca, le, da so v tem poročilu # Še tabele IPP (ocene izvajalca pri predmetih) in odprti odgovori študentov za IPP dir.create(paste0("Evalvacija/results/",fakulteta,"/Habilitacijska"), showWarnings = FALSE) # Folder, kjer se bodo generirala poročila za študijske programe dir.create(paste0("Evalvacija/results/",fakulteta,"/Programi"), showWarnings = FALSE) # ------------------------------- //FOLDERS FOR OUTPUT// -------------------------------------# #---------------------------------------- IMPORT AND PREPARE DATA -----------------------------------------# #!!!!!! OLD (včasih somo to delali iz SPSS baze (2014) zato smo) ohranili datoteko "navodila.xlsx" # 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) # Glej excel navodila!!! navodila <- openxlsx::read.xlsx(xlsxFile = "Evalvacija/temp/navodila.xlsx", colNames = TRUE, rowNames = TRUE) # Preberemo vhodne datoteke Fakultete glede na ID, ki smo ga opredelili # # Vse vhodne podatke pripravi Peter oziroma dobim na naslovu: # https://anketa.uni-lj.si/student//index.php # V študijskem letu 2016/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 # 1) Celotno kodo preuredimo tako, da bomo podatke "vlekli" iz dveh različnih baz # (data_pred_izpitom, data_po_izpitu) #' Podatki za: @name Anketa PRED izpitom---------------------- data_pred_izpitom <- read.csv2( paste0("Evalvacija/temp/anketa_pred_izp_", fakulteta, ".csv"), header = TRUE, fill = TRUE, stringsAsFactors = FALSE ) # Read from second row (first rows are labels) if (data_pred_izpitom[1, 1] == "Ustreznost") { data_pred_izpitom <- data_pred_izpitom[2:nrow(data_pred_izpitom), ] } #' Podatki za: @name Anketa PO izpitu----------------------- data_po_izpitu <- read.csv2( paste0("Evalvacija/temp/anketa_po_izpitu_", fakulteta, ".csv"), header = TRUE, fill = TRUE, stringsAsFactors = FALSE ) # Read from second row if (data_po_izpitu[1, 1]=="Ustreznost") { data_po_izpitu <- data_po_izpitu[2:nrow(data_po_izpitu),] } #' @name sifrantX1 -------------------------------------# # Je edini obvezni šifrant, kjer se nahajajo vsi pomembni # podatki za generiranje poročil. sifrant <- read.csv2( paste0("Evalvacija/temp/sifrant_", fakulteta, ".csv"), header = TRUE, fill = TRUE, stringsAsFactors = FALSE ) # TIDY DATA --------------------------# # remove extra spaces # trim funkcija je definirana v funkcije.r sifrant$PREDMET <- trim(sifrant$PREDMET) # remove dots in front of course names (FDV!) sifrant$PREDMET <- sub("^\\.", "", sifrant$PREDMET) # remove extra spaces sifrant$NAZIV.PEDAGOGA <- trim(sifrant$NAZIV.PEDAGOGA) # Novi šifranti, ki smo jih prodobili s strani UL in ne Petra # if (ID == 3000018) { # sifrant$IDP <- # ifelse(sifrant$NACIN_STUDIJA == "1", # paste0(sifrant$IDP, "_1"), # paste0(sifrant$IDP, "_2")) # } #------------------------ //TIDY DATA// ------------------------# # Šifrant X3: STUDENT PROGRAM NAMES------------------------------ programi.imena <- read.csv2( paste0("Evalvacija/temp/programi_", fakulteta, ".csv"), fill = TRUE, header = TRUE, stringsAsFactors = FALSE ) # UPDATED 29.10.2019 # # ZA POTREBE FDV DODAMO IMENA PRENOVLJENIH IN STARIH PROGRMOV--------- # Trenutno je namreč tako, da imamo za dva različna programa isto # ime a različni šifri. Z imena programa pa izvajalec ne ve # ali gre z anov ali star program. # FDV je zato izrazil željo, da bi prenovljene in predhodne programe # ločili tako, da bi k imenu dodali (prendovljeni) ali (predhodni) # Torej to naredio le v primeru FDV, za druge fakultete pa po # NAROČILU if (ID == 3000021) { # Programe bomo poimenovali v vseh bazah in šifrantu programov # Družboslovna informatika UNI stari program ima ID = 1000229 # Družboslovna informatika UNI prenovljeni program ima ID = 1001021 source("Evalvacija/R/funkcije/nova_imena_programov.R", encoding = "UTF-8") # ANKETA PRED IZPITOM data_pred_izpitom <- prenPredh(data_pred_izpitom, "program", "idprog") # ANKETA PO IZPITU data_po_izpitu <- prenPredh(data_po_izpitu, "program", "idprog") # Šifrant vse programov: programi.imena <- prenPredh(programi.imena, program = "Naziv", idprog = "ID") } # Dodatno pa še: # Ločimo univerzitetne in visokošolske programe z vrsto študija, # ker so drugače podvojena imena (npr. Družboslovna informatika (uni)) # Imenu programa prilepimo vrsto študija (npr. uni ali vs) programi.imena$Naziv <- paste0(programi.imena$Naziv, " (", programi.imena$Vrsta, ")") # Če so pokvarjeni ČŽŠ-ji zaradi napačnega encodinga v šifrantih to ustrezno popravimo #Encoding(programi.imena$Naziv) <- "UTF-8" #------------------------------------ //IMPORT AND PREPARE DATA// --------------------------------------# #------------------------- ERROR CHECK -------------------------# # MOREBITNE NESKLADNOSTI Z 1KA BAZO podatkov IN # ŠIFRANTOM X1, KI BI LAHKO VPLIVALE NA PRAVILNOST # IZDELAVE PDF POROČIL source('Evalvacija/R/funkcije/errorCheck.r', encoding = "UTF-8") #---------------------- //ERROR CHECK// ------------------------# #--------------------------------------- AGREGAT SUMARNIH PREDMETOV -----------------------------------------# # UPDATE 23.12.2019 # Začasno zakomenentiramo tale del, saj so bile neke napake v poročilih. Se vrnemo kasneje k temu # Če je ID == Fakulteta za Glasbo združimo določene predmete iz šifranta x7 v meta predmet # if (ID == 3000043){ # source('Evalvacija/R/zdruzevanje_predmetov_AG.R') # source('Evalvacija/R/funkcije/errorCheck.r', encoding = "UTF-8") # } #------------------------------------ //AGREGAT SUMARNIH PREDMETOV// ----------------------------------------# #------------------- DEFINE VARIABLES FOR CALUCLATIONS -------------------# # We create list of variables which will be called for descriptive # statistics and Latex tables purposes source("Evalvacija/R/03_variables.R") #------------------- DEFINE VARIABLES FOR CALUCLATIONS -------------------# #------------------------------- MAIN PART -----------------------------------# # V tem delu pripravimo vse potrebne izračune, in sicer: #' opisne statistike, kvantilne range in frekvence glede #' na \predmet, \izvajalca, \program in \letnik študentov za: #' sedem @komponent v anketi PRED #' šest @komponent za izvajalca pri predemtih v anketi PRED #' tri @komponente za predmet v anketi PO #' @kompetence v anketi PO #' @Utreznost KT v anketi PO #' komponente @prakse v anketi PO # PODATKI ZA PREDMETE (ANKETA PRED) ----------------------# source("Evalvacija/R/04_Anketa_PRED.R", encoding = "UTF-8") #---------------------------------------------------------# # PODATKI ZA IZVAJALCE (ANKETA PRED) ---------------------# source("Evalvacija/R/05_Izvajalci_PRED.R", encoding = "UTF-8") #---------------------------------------------------------# # PODATKI ZA PREDMETE (ANKETA PRED) ----------------------# source("Evalvacija/R/06_Anketa_PO.R", encoding = "UTF-8") #---------------------------------------------------------# ################### # UPDATE 3.9.2018 # ################### # TRENUTNO, bomo kasneje preuredili. # Za potrebe Agregatov zapišemo vse ocene tudi za tiste predmete z manj kot # štirimi odgovori. # IZVAJALCI PRI PREDMETIH (ANKETA PRED)------------- # Dodamo še študijsko leto year <- strsplit(semester.leto, " ")[[1]] year <- grep("/", year, value = TRUE) # dates povprecja.izvajalci.programi.brez.cenzure$leto <- year povprecja.predmeti.programi.PO.brez.cenzure.PO$leto <- year povprecja.predmeti.programi.brez.cenzure$leto <- year write.csv2( povprecja.izvajalci.programi.brez.cenzure, paste0( "Evalvacija/results/", fakulteta, "/Agregati/izv_agregat_18_19.csv" ) ) # PREDMETI (ANKETA PO)----------------- write.csv2( povprecja.predmeti.programi.PO.brez.cenzure.PO, paste0( "Evalvacija/results/", fakulteta, "/Agregati/po_agregat_18_19.csv" ) ) # PREDMETI (ANKETA PRED) --------------- write.csv2( povprecja.predmeti.programi.brez.cenzure, paste0( "Evalvacija/results/", fakulteta, "/Agregati/pred_agregat_18_19.csv" ) ) #----------------------------- //MAIN PART// ---------------------------------# #--------------------------- FACULTY DESCRIPTIVE STATISTICS --------------------------------# # Za potrebe Latex tabel, kjer primerjamo povprečje posameznega izvajalca ali programa # s povprečjem celotne fakultete, za posamezne komponente izračunamo še to. # Povprečje izvajalcev celotne fakultete----------------------------------- F.avg.izv <- colMeans(povprecja.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"), "izvajalec.ocena.SKUPAJ")], na.rm = TRUE) # For Latex table purposes F.avg.izv <- round(F.avg.izv, 1) #------------------------------------------------------------------------# # Povprečja izvajalcev pri vseh predmetih------------------------------------ # Povprečje vsek izvajalcev fakultete in insert v tabelo 1.3 (zadnja vrstica) # Predmeti, ki imajo dovolj ocen predmeti.izbor <- povprecja.predmeti$predmet.sifra # Preverimo kateri izvajalci vse sodelujejo pri določenem predmetu (IPP) izvajalci.izbor <- unique(povprecja.izvajalci$izvajalec.sifra) # Naredimo Podmnožico izbor.izvajalci <- subset( povprecja.izvajalci, predmet.sifra %in% predmeti.izbor & izvajalec.sifra %in% izvajalci.izbor ) # Izračunamo povprečje IPP izbor.izvajalci.skupaj <- aggregate(izbor.izvajalci[c(paste0(vars.izvajalec$cont$vars, "_mean"), "izvajalec.ocena.SKUPAJ")], by = izbor.izvajalci[c("izvajalec.sifra", "predmet.sifra")], FUN = mean, na.rm = TRUE) # TOTAL Mean of all IPP (izvajalci pri predmetih) F.avg.ipp <- colMeans(izbor.izvajalci.skupaj[3:ncol(izbor.izvajalci.skupaj)], na.rm = TRUE) #---------------------------------------------------------------------------# # Povprečje predmetov (anketa PRED izpitom, anketa PO izpitu, študijska praksa) -------------------- F.avg.pred <- colMeans(povprecja.predmeti[c(paste0(vars.cours, "_mean"), "predmet.ocena.SKUPAJ")], na.rm = TRUE) F.avg.po <- colMeans(povprecja.predmeti.po[c(paste0(vars.cours.po, "_mean"), "predmet.ocena.SKUPAJ")], na.rm = TRUE) # For latex tabel purposes we wil change the order of components in F.avg.po F.avg.po.tab <- F.avg.po[c(2:4,length(F.avg.po), 1, 5)] # Povprečje študijskih praks F.avg.prak <- colMeans(povprecja.predmeti.po[c(paste0(vars.predmet$cont$praksa, "_mean"), "predmet.ocena.SKUPAJ.praksa")], na.rm = TRUE) # Povprečje Ustreznost KT F.avg.KT <- colMeans(povprecja.predmeti.po["predmet.ocena.krediti_mean"], na.rm = TRUE) # Povprečni Standardni odklon za ustreznost KT F.avg.sd.KT <- colMeans(povprecja.predmeti.po["predmet.ocena.krediti_sd"], na.rm = TRUE) # Povprečni odstotek odgovorov na lestvici od 1 do 5 F.avg.KT.likert <- colMeans(povprecja.predmeti.po[paste0("krediti_razporejanje_pct_", 1:5)], na.rm = TRUE) # Povprečje kompetence F.avg.kom <- colMeans(povprecja.predmeti.po["predmet.ocena.kompetence_mean"], na.rm = TRUE) # Povprečni Standardni odklon za kompetence F.avg.sd.kom <- colMeans(povprecja.predmeti.po["predmet.ocena.kompetence_sd"], na.rm = TRUE) F.avg.kom.likert <- colMeans(povprecja.predmeti.po[paste0("kompetence1_razporejanje_pct_", 1:5)], na.rm = TRUE) #--------------------------------------------------------------------------------------------# # Skupna Povprečja IZVAJLCEV fakultete glede na STOPNJO ------------------------# Fizv <- rbind(skupaj = colMeans(povprecja.izvajalci[c( "ST_STUD", "N_anket", "N_anketTotal", "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_anketTotal", "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_anketTotal", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct", "nipouceval.pct" )], na.rm = T)) #-------------------------------------------------------------------------------------# # Skupna Povprečja PREDMETOV fakultete glede na STOPNJO in glede na SEMESTER IZVAJANJA--------- # Anketa PRED Fpred <- rbind( skupaj = colMeans(povprecja.predmeti[c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "1" = colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 1, c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "2" = colMeans(povprecja.predmeti[povprecja.predmeti$STOPNJA == 2, c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "prvi_semester" = colMeans( subset(povprecja.predmeti, SEMESTER_IZV %in% prvi_semester) [c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T ), "drugi_semester" = colMeans( subset(povprecja.predmeti, SEMESTER_IZV %in% drugi_semester) [c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T ) ) # ANKETA PO Fpo <- rbind( skupaj = colMeans(povprecja.predmeti.po[c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "1" = colMeans(povprecja.predmeti.po[povprecja.predmeti.po$STOPNJA == 1, c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "2" = colMeans(povprecja.predmeti.po[povprecja.predmeti.po$STOPNJA == 2, c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T), "prvi_semester" = colMeans( subset(povprecja.predmeti.po, SEMESTER_IZV %in% prvi_semester) [c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T ), "drugi_semester" = colMeans( subset(povprecja.predmeti.po, SEMESTER_IZV %in% drugi_semester) [c("ST_STUD", "N_anket", "sodelujocih.pct", "zavrnjenih.pct", "neodzivnih.pct")], na.rm = T ) ) #---------------------------------------------------------------------------------# ################## # 1.8.2019 Se vrnemo k temu delu #################################### ################## #------------------------------- Poglavje SPLOŠNA METODOLOGIJA -------------------------------------# #Podatki, ki generirajo vrednosti v latex datoteki metodolosko.pojasnilo. Glej mapo latexkosi # S funkcijo scan preberemo tex. datoteko metodolosko.pojasnilo.tex # Gre za poglavje, ki se nahajaa na koncu (skoraj) vsakega PDF poročila tex.okvir <- scan( "Evalvacija/latexkosi/metodolosko.pojasnilo.tex", character(0), sep = "\n", quiet = TRUE, encoding = 'UTF-8' ) tex.okvir.izv <- scan( "Evalvacija/latexkosi/metodolosko.pojasnilo.izv.tex", character(0), sep = "\n", quiet = TRUE, encoding = 'UTF-8' ) #Številka oz povprečji za dodiplomski in podpilomski študij za anketo PRED izpitom ## ZIMSKI SEMESTER ## # število predmetov metod_XXX <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDP)) # število pedagogov metod_YYY <- length(unique(subset(sifrant, SEMESTER_IZV %in% prvi_semester)$IDPEDAGOGA)) # število izvedb.. metod_UUU <- nrow(subset(sifrant, SEMESTER_IZV %in% prvi_semester)) # number of prepared evaluations for courses metod_VVV <- metod_XXX # number of prepared evaluations for lecturers metod_RRR <- metod_UUU tex.okvir <- gsub(pattern=":IME:", replacement=fakulteta, x=tex.okvir) # 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") # 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).}}")) ############################################################## # KOMENTARJI PRI POVPREČJIH IZVAJALCEV HABILITACIJSKA KOMISIJA # K povprečni ocenam izvajalcev dodamo še komentarje študentov # # Uporabimo le v pimeru, da delamo poročila za habilitacijsko komisijo # Habilitacijska <- TRUE # if (Habilitacijska == TRUE) { # povprecja.izvajalci.habili <- # 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.habili, # paste0("povprecja.izvajalci_",format(Sys.Date(), "%Y"),".csv")) # write.csv2(povprecja.predmeti, paste0("povprecja.predmeti_",format(Sys.Date(), "%Y"),".csv")) # } ############################################################# povprecja.predmeti <- merge(povprecja.predmeti, poNLurkerji, by = "predmet.sifra", all = TRUE, sort = FALSE) #----------------------------------- TRENDI ZA ŠTUDIJSKE PROGRAME PO PREMDETIH ------------------------------# # Tredni študijskih programov članice po predmetih # Za vsako leto želimo imeti podatke posebej, da jih zapišemo v skupno mapo trendi.prog.predmeti <- TRUE if (trendi.prog.predmeti == TRUE) { # Dodamo še stolpec let po katerem bomo filtrirali trende year <- strsplit(semester.leto, " ")[[1]] year <- grep("/", year, value = TRUE) # dates povprecja.predmeti.programi$leto <- year povprecja.predmeti.programi.PO$leto <- year # Anketa PRED------------------------------ #(dodamo letnico da bo razvidno # za katero leto imamo podatke) write.csv2( povprecja.predmeti.programi, paste0( "povprecja.predmeti.programi.pred.", as.numeric(format(Sys.Date(), "%Y")) - 1, "_", format(Sys.Date(), "%Y"), ".csv" )) # Anketa PO----------------------- write.csv2( povprecja.predmeti.programi.PO, paste0( "povprecja.predmeti.programi.po.", as.numeric(format(Sys.Date(), "%Y")) - 1, "_", format(Sys.Date(), "%Y"), ".csv" )) # FAKULTETA------------------------- # Zapisemo se povprecja za fakulteto, # ki jjh bomo zapisali v latex tabelo # Najprej pripravimo podatke F.tr.df <- c(F.avg.pred, F.avg.po, F.avg.prak["predmet.ocena.SKUPAJ.praksa"]) names(F.tr.df)[8] <- "predmet.ocena.SKUPAJ.pred" names(F.tr.df)[23] <- "predmet.ocena.SKUPAJ.po" colnames(F.tr.df) <- # Write write.csv2( F.tr.df, row.names = names(F.tr.df), paste0( "povprecja.fakultete.", as.numeric(format(Sys.Date(), "%Y")) - 1, "_", format(Sys.Date(), "%Y"), ".csv" ) ) } #--------------------------------- //TRENDI ZA ŠTUDIJSKE PROGRAME PO PREMDETIH// ----------------------------# ############################################################################### # 19.1.2019 # trenutno bomo tu ustvarili funkcijo, ki bo služila za izrisovanje latex tabel pri # IZDELAVI PDF POROČIL ZA ŠTUDIJSKE PROGRAME in FAKULTETO # Sicer je že tako ali tako preveč kode, ampak bomo naknadno vse preuredili # ANKETA PRED tb.lat <- function(data, tabname, row.just, namen = "PRED", Agregati = FALSE, agregatNote = FALSE) { # Funkcija sprejme podatkovni okvir, ime tabele, # velikost tabele in število stolpcev # First check if we are doing latex table # for the coruse or for the lecturer # due to different columns in latex table if (namen == "PRED") { # PRED n.col = c("c|", rep_len("c", 7), "|c") note <- paste("{\\footnotesize \\textit{}}") } else if (namen == "PO") { # PO n.col = c("c|", rep_len("c", 3), "|c", "|c", "c") note <- paste( "{\\footnotesize \\textit{* {\\color{Orange}Oranžno} so označena {\\color{Orange}opozorilna} odstopanja ({\\color{Orange}2.4-2.6}) in ({\\color{Orange}3.4-3.6}), {\\color{BrickRed}rdeče} pa {\\color{BrickRed}kritična} odstopanja (pod {\\color{BrickRed}2.4}) in (nad {\\color{BrickRed}3.6}). }}" ) } else if (namen == "IPP") { # Izvajalci pri predmetih n.col = c("c|", rep_len("c", 6), "|c") note <- paste( "{\\footnotesize \\textit{* št. IPP - število vseh izvajalcev pri predmetih na določenem programu.}}" ) } else { # If we are doing tables for Trends n.col = c(rep_len("c", ncol(data))) note <- NULL } # Preverimo ali delamo Latex tabelo za potrebe Agregatov if (Agregati == TRUE) { if ("Povp. a" %in% colnames(data) & "Povp. b" %in% colnames(data)) { n.col = c(rep_len("c", ncol(data) - 2), "|c", "c") } else if ("Povp. a" %in% colnames(data) & !"Povp. b" %in% colnames(data)) { n.col = c(rep_len("c", ncol(data) - 1), "|c") } else { n.col = c(rep_len("c", ncol(data))) } note <- NULL } # Update 2.11.2019 # Pri agregatih PROGRAMOV bomo v tabeli # kjer predstavljamo kreditne točke # Dodali še opombo pod tabelo glede # barvanja if (agregatNote == TRUE) { note <- paste( "{\\footnotesize \\textit{* {\\color{Orange}Oranžno} so označena {\\color{Orange}opozorilna} odstopanja ({\\color{Orange}2.4-2.6}) in ({\\color{Orange}3.4-3.6}), {\\color{BrickRed}rdeče} pa {\\color{BrickRed}kritična} odstopanja (pod {\\color{BrickRed}2.4}) in (nad {\\color{BrickRed}3.6}). }}" ) } # Latex table table <- capture.output( Hmisc::latex( data, caption = tabname, rowlabel = "", file = "", where = "H", rowlabel.just = row.just, multicol = FALSE, longtable = TRUE, lines.page = 1000, # table will be 1000 line long per page insert.bottom = note, col.just = n.col ) ) return(table) } #----------------------# # Update 22.12.2019 # Za potrebe poročil habilitacijske komisije # moramo k povprečjem izvajalcev dodati še # komentarje izvajalcev pri posameznem predmetu # vse skupaj pa zapisati v bazo iz katere # bomo nato v habilitacijskem poročilu # za posamezen predemt zapisali komentarje izvajalci.komentarji <- 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 ) year <- strsplit(semester.leto, " ")[[1]] year <- grep("/", year, value = TRUE) # dates year <- gsub("/", "-", year) # dates izvajalci.komentarji$leto <- year # Ustvarimo csv datoteki, ki ju nato uporabimo za generiranje poročil TRENDOV in HABILITACIJSKE KOMISIJE write.csv2(izvajalci.komentarji, paste0("Evalvacija/results/",fakulteta,"/Trendi/izvajalci.komentarji.csv"))