Skip to contents

count_resp() is a generic function that count responses per student from Moodle Responses report(s) (not Grades report). Similar to combine_resp(), if the Moodle responses report has response column(s) that contained embedded answers (Cloze), you have an option to count them as a whole (1 Cloze column = 1 count) or as individual parts (count each parts of Cloze column, individually). Other functionality are similar to check_sub() such as: encode & filter student's attempts by state (i.e., "Finished" or "In progress") and started time ("Started on" column), cleans column names for easy manipulation, extracts student ID from "Email address", and unites "First name" and "Surname" column into "Name".

Usage

count_resp(
  data,
  extract_id_from = c("Email address", "Institution", "Department", "ID number"),
  id_regex = ".*",
  sep_name = " ",
  state = c("Finished", "In progress"),
  encode = c(1, 0),
  choose_encode = c("max", "min", "all"),
  choose_time = c("first", "last", "all"),
  count_cloze_parts = F,
  filter_count = c("max", "all"),
  sep_col = "_"
)

Arguments

data

A data.frame or named list of data.frame of Moodle Responses report(s) (not Grades report)

extract_id_from

(Character) Choose 1 column to extract ID from

id_regex

(Character) A regular expression used to extract ID from column "Email address" in the Moodle Quiz report. The default is ".*" meaning all characters. If your student email addresses has numeric IDs in them, try "[:digit:]+" to extract digits from the email. Note: Regular expression syntax is the same as stringr.

sep_name

A character in the new "Name" column that separate original "First name" and "Surname".

state

A character vector to match values in "State" column of the Moodle Quiz report

encode

An encoding numeric vector corresponding to state. For example: by default, in the "State" column, "Finished" values will be encoded as 1, and "In progress" will be encoded as 0.

choose_encode

A character to filter student's attempt by the encodeing.

  • "max" (default): return rows that have maximum encoding of each students.

  • "min": return rows that have minimum encoding of each students.

  • "all": no filter applied, return all rows.

choose_time

A character to filter student's attempt by started time (determined by "Started on" column in Moodle Quiz report). This filter applies after choose_encode has been applied to the data.

  • "first" (default): return rows that represent first attempt of each students.

  • "last": return rows that represent last attempt of each students.

  • "all": no filter applied, return all rows after applying choose_encode

count_cloze_parts

(Logical) If a Moodle Responses report has at least one response column(s) that contained embedded answers (Cloze), set count_cloze_parts = TRUE will count individual parts of each Cloze columns. If FALSE, then it will count each Cloze column as 1 count.

filter_count

(Character) One of "max" or "all". This filter option will apply after filter by choose_encode and choose_time.

  • "max": filter rows that has maximum response count per student. If there are ≥ 1 rows, filter the first one based on Started.

  • "all": No further filter apply.

sep_col

(Character) If data is a named list of data.frame, sep_col indicate a character separation between names of list and "State" or "Count_resp" columns.

Value

A data.frame, its output content is determined by class of its first argument: data.

  • If the data is a data.frame; the output is an encoded, filtered, and cleaned data.frame of Moodle Responses report. And the "Count_resp" column is added with maximum number of count appended at the column name.

  • If the data is a named list of data.frame; the output is the same as previously described, but all Moodle Quiz reports are full-joined together by column "Name" and "ID". So that, "Count_resp" columns from each data.frame are sit together in a single data.frame, and "Total" column is added at the last column to indicate total count.

Details

Counting Mechanism: count_resp() gives 1 count to 1 responses cell if one or more characters were found. Blank or "-" (dash) response will not be counted.

Examples

# Count Responses of Quiz 1
count_resp(responses_ls$Quiz_1,
           id_regex = "[:digit:]+")
#> # A tibble: 26 × 9
#>    Name   ID    Insti…¹ Depar…² State Encode Started             Grade…³ Count…⁴
#>    <chr>  <chr> <lgl>   <lgl>   <chr>  <dbl> <dttm>              <chr>     <int>
#>  1 Lance… 004   NA      NA      Fini…      1 2022-04-19 19:19:00 Not ye…       2
#>  2 Sydne… 002   NA      NA      Fini…      1 2022-04-19 16:32:00 Not ye…       2
#>  3 Itzel… 016   NA      NA      Fini…      1 2022-04-19 12:36:00 Not ye…       1
#>  4 Hakam… 001   NA      NA      Fini…      1 2022-04-19 06:46:00 Not ye…       2
#>  5 Hamoo… 012   NA      NA      Fini…      1 2022-04-19 03:23:00 Not ye…       2
#>  6 Domin… 007   NA      NA      Fini…      1 2022-04-19 09:03:00 Not ye…       2
#>  7 Zhjad… 009   NA      NA      Fini…      1 2022-04-19 02:17:00 Not ye…       2
#>  8 Jorda… 013   NA      NA      Fini…      1 2022-04-19 12:10:00 Not ye…       2
#>  9 Kevin… 025   NA      NA      Fini…      1 2022-04-19 03:41:00 Not ye…       2
#> 10 Angel… 018   NA      NA      Fini…      1 2022-04-19 01:48:00 Not ye…       2
#> # … with 16 more rows, and abbreviated variable names ¹​Institution,
#> #   ²​Department, ³​Grade_2.00, ⁴​Count_Resp_2

# Count Responses from All Quizzes
count_resp(responses_ls,
           id_regex = "[:digit:]+")
#> # A tibble: 26 × 7
#>    Name             ID    Quiz_1_State Quiz_1_Count_Re…¹ Quiz_…² Quiz_…³ Total_5
#>    <chr>            <chr> <chr>                    <int> <chr>     <int>   <int>
#>  1 Lance Xiong      004   Finished                     2 Finish…       3       5
#>  2 Sydney Halamicek 002   Finished                     2 Finish…       3       5
#>  3 Itzel Palomino   016   Finished                     1 Finish…       3       4
#>  4 Hakam el-Farooq  001   Finished                     2 Finish…       3       5
#>  5 Hamood al-Farha  012   Finished                     2 Finish…       3       5
#>  6 Dominique Solis  007   Finished                     2 Finish…       3       5
#>  7 Zhjade Alarid    009   Finished                     2 Finish…       2       4
#>  8 Jordan Tan       013   Finished                     2 Finish…       2       4
#>  9 Kevin Vasquez    025   Finished                     2 Finish…       3       5
#> 10 Angela Carrillo  018   Finished                     2 Finish…       2       4
#> # … with 16 more rows, and abbreviated variable names ¹​Quiz_1_Count_Resp_2,
#> #   ²​Quiz_2_State, ³​Quiz_2_Count_Resp_3