stat.101.grades <- as.data.frame(scan("gradebook.txt", skip=4, what=list(name="", quiz.1=0, quiz.2=0, quiz.3=0, quiz.4=0, test.1=0, test.2=0, final=0, project="", grad.student='logical'), multi.line=T)) attach(stat.101.grades) quizzes <- cbind(quiz.1,quiz.2,quiz.3,quiz.4) adj.mean <- function(x){ output <- (sum(x)-min(x))/(length(x)-1) return(output) } quiz.avg <- apply(quizzes,1,adj.mean) tests <- cbind(test.1,test.2,final) adj.mean.test <- function(x){ output <- max(mean(x), rev(x)[1]) return(output) } test.avg <- apply(tests,1,adj.mean.test) project.grade<-rep(0, times=nrow(stat.101.grades)) project.grade[project=="A"] <- 100 project.grade[project=="B"] <- 90 project.grade[project=="C"] <- 80 grad.student <- as.logical(grad.student) summaries <- cbind(quiz.avg, test.avg, project.grade, grad.student) overall.average <- ifelse(grad.student, .10*quiz.avg + .60*test.avg + .30*project.grade, .15*quiz.avg + .60*test.avg + .25*project.grade) grade.report <- as.data.frame(cbind(as.character(name), overall.average)) names(grade.report) <- c("Name", "Overall.Average") print(grade.report)