855 lines
34 KiB
R
855 lines
34 KiB
R
# 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"))
|
|
|