knitr::opts_chunk$set(eval = FALSE)
The goal of rcanvas is to get student and course data as simply as possible. Towards that end, there are three core functions: (1) get_course_list()
; (2) get_course_items()
; and (3) get_course_analytics_data()
.
You can obtain a complete listing of your courses with a simple call to get_course_list()
:
library(rcanvas)
courses <- get_course_list()
names(courses)
If you want the courses for a specific student, specify the user’s id with the optional user_id
argument:
get_course_list(user_id = 344)
If you know the id number of a particular course, you can get a variety of data with calls to get_course_items()
:
course <- get_course_items(course_id = 20, item = "enrollments")
names(course)
Other items include “settings”, “discussion_topics”, “todo”, “enrollments”, “features”, “files”, “modules”, “front_page”, “pages”, “quizzes”, etc.
You can get course analytics data on four “types”: “assignments”, “users”, “activity”, or “student_summaries”:
x <- get_course_analytics_data(20, "activity")
names(x)
Here’s an example that interested us: the relationship between student activity and grades in a cohort of our Core Premium students:
library(dplyr)
library(purrr)
library(ggplot2)
premium_course_ids <- get_course_list() %>%
mutate(premium = if_else(grepl("Premium", name), "premium", "not premium")) %>%
filter(premium == "premium") %>%
.$id
student_data <- premium_course_ids %>%
map(get_course_items, "enrollments") %>%
map(filter, role == "StudentEnrollment") %>%
map(select, dplyr::contains("current_score"), dplyr::contains("total_activity_time")) %>%
map_df(bind_rows)
ggplot(student_data, aes(grades.current_score, log(total_activity_time))) +
geom_point() +
geom_smooth(method = "lm")