data-raw/01_clean_SMI_2018.R

## Libs ----
library(tidyverse)
library(readxl)

## Read in data ----
marks  <- read_excel("data-raw/SMI_2018_course_marks.xlsx")
exam  <- read_excel("data-raw/SMI_2018_exam_marks.xlsx")

## Remove unwanted columns
marks  <- 
  marks %>% 
  select(ID = `SIS Login ID`, 
         `Assignment 1 (77417)`:`Assignment 5 (84889)`,
         `Project (85361)`:`ANCOVA (86471)`)
marks$ID[1]  <- "totals"
marks
exam  <- 
  exam %>% 
  select(-Student, -ET, -Q7, - Q8)
exam$ID[1]  <- "totals"

## Merge ----
SMI_2018_marks  <- left_join(marks, exam, by = "ID")
SMI_2018_marks

## Add false ID ----
n  <- nrow(SMI_2018_marks)
SMI_2018_marks$ID  <- c("Totals", 1:(n - 1))

## Save data ----
usethis::use_data(SMI_2018_marks, overwrite = TRUE)

## Clean data ----
colnames(SMI_2018_marks)  <- c("ID", 
                               str_c("A", 1:5), 
                               "P", 
                               str_c("OQ0", 1:8), 
                               str_c("Q", 1:6))
SMI_2018_marks  <- 
  SMI_2018_marks %>% 
  clean_marks_df("^A") %>% 
  clean_marks_df("^P$") %>% 
  clean_marks_df("^OQ") %>% 
  clean_marks_df("^Q")

## Get proportions ----
SMI_2018_marks <- 
  SMI_2018_marks %>% 
  get_prop_df("^A", total_row = 1) %>% # Assignments
  get_prop_df("^P$", total_row = 1) %>% # project
  get_prop_df("^OQ", total_row = 1) # Online quizzes

## Get exam total ----
SMI_2018_marks$E  <- 
  SMI_2018_marks %>% 
  get_total("^Q")

## Get exam proportions ----
SMI_2018_marks  <- 
  SMI_2018_marks %>% 
  get_prop_df("^E$|^Q", total_row = 1)
SMI_2018_marks

## Get means for Assignments and Online quizzes ----
SMI_2018_marks$A  <- 
  SMI_2018_marks %>% 
  get_mean("^A")
SMI_2018_marks$OQ  <- 
  SMI_2018_marks %>% 
  get_mean("^OQ")

## Convert sections to percent ----
SMI_2018_marks  <- 
  SMI_2018_marks %>% 
  mutate(
    A = A * 15, 
    OQ = OQ * 5,
    P = P * 10, 
    E = E * 70
  )

## Get total mark ----
SMI_2018_marks$Total  <- 
  SMI_2018_marks %>% 
  get_total("^A$|^OQ$|^P$|^E$")

## Get grades ----
SMI_2018_marks$grade  <- get_grades(SMI_2018_marks$Total, trace = TRUE)

## Remove totals row ----
SMI_2018_marks_clean  <- SMI_2018_marks[-1, ]
SMI_2018_marks_clean

## Save data ----
usethis::use_data(SMI_2018_marks_clean, overwrite = TRUE)
jonotuke/examMarking documentation built on Nov. 26, 2019, 3:48 p.m.