Este informe parte de los ficheros .csv proporcionados por los profesores para controlar la asistencia de los alumnos y las resume por alumno a lo largo de los dos bloques de la materia:
pkgs=c("plyr","reshape2","ggplot2","xtable","ztable")
lapply(pkgs, require, character.only = T)
## Loading required package: plyr
## Loading required package: reshape2
## Loading required package: ggplot2
## Loading required package: xtable
## Loading required package: ztable
## Welcome to package ztable ver 0.1.5
## [[1]]
## [1] TRUE
##
## [[2]]
## [1] TRUE
##
## [[3]]
## [1] TRUE
##
## [[4]]
## [1] TRUE
##
## [[5]]
## [1] TRUE
#
setwd("~/git/SCI/")
dM1=read.csv(file="asistencia SCI_M1.csv",sep=",",
header=TRUE,stringsAsFactors=FALSE)
b2M1=dM1[,1:2]
b2M1[,2]=apply(dM1[,5:ncol(dM1)],1,function(x){return(sum(nchar(x)>0))})
colnames(b2M1)[2]="Num.Asistencias.Registradas"
#
dM2=read.csv(file="asistencia SCI_M2.csv",sep=",",
header=TRUE,stringsAsFactors=FALSE)
b2M2=dM2[,1:2]
b2M2[,2]=apply(dM2[,5:ncol(dM2)],1,function(x){return(sum(nchar(x)>0))})
colnames(b2M2)[2]="Num.Asistencias.Registradas"
#
dM3=read.csv(file="asistencia SCI_M3-1.csv",sep=",",
header=TRUE,stringsAsFactors=FALSE)
b2M3=dM3[,1:2]
b2M3[,2]=apply(dM3[,5:ncol(dM3)],1,function(x){return(sum(nchar(x)>0))})
colnames(b2M3)[2]="Num.Asistencias.Registradas"
# Ajustamos el 0 inicial de los DNIs
b2M1[,1]=gsub('^0','',b2M1[,1])
b2M2[,1]=gsub('^0','',b2M2[,1])
b2M3[,1]=gsub('^0','',b2M3[,1])
# Junatamos las asistencias de todo el b2
b2=rbind(b2M1,b2M2,b2M3)
#
# Procesamos el B1
dMT=read.csv(file="SCI_1415_listado_matriculados.csv",sep=",",
header=TRUE,stringsAsFactors=FALSE)
b1MT=dMT[,c(1,4,5)]
b1MT[,3]=apply(dMT[,7:ncol(dMT)],1,function(x){return(sum(nchar(x)>0))})
colnames(b1MT)[3]="Num.Asistencias.Registradas"
#
# Juntamos los dos bloques buscando la coincidencia de los DNI
sci=merge(b1MT,b2,by="DNI",all=TRUE)
sci[,5]=round((sci[,3]+sci[,4])*100/(max(sci[,3],na.rm=TRUE)+max(sci[,4],na.rm=TRUE)),1)
colnames(sci)[5]="Total.Asistencias"
Una vez hemos contado las asistencias o ausencias justificadas, podemos pintar un gráfico de barras con el % de asistencias sobre el máximo de 9 en el primer bloque y de 9 en el segundo y la charla.
rownames(sci)=sci[,1]
c=ggplot(sci,aes(factor(Total.Asistencias)))
c+geom_bar()
Queda pues pendiente establecer el umbral por debajo del cual los alumnos deberían hacer el examen NOPRESENCIAL, teniendo en cuenta las prácticas ya realizadas, sea en la modalidad NO PRESENCIAL, sea en la modalidad PRESENCIAL.
#
grupo=function(x){
i=length(grep("M01",x[9:16]))
j=length(grep("M02",x[9:16]))
k=length(grep("M03",x[9:16]))
grp=which.max(c(i,j,k))
return(grp)
}
#
table(apply(dMT,1,grupo))
##
## 1 2 3
## 59 48 51