View source: R/combine_checkboxes.R
| combine_checkboxes | R Documentation | 
In REDCap, checkbox style variables are ones where more than one choice is allowed and the responses appear over multiple columns with values "Checked" or "Unchecked" that have names with a similar prefix. This function takes the columns specified by the prefix and combine them into a single column.
combine_checkboxes(
  data,
  id_var,
  prefix,
  check_text = "Checked",
  sep = ", ",
  data_labels = NULL
)
| data | A tbl_df or data.frame | 
| id_var | Name of the column for each subject/participant/observational unit | 
| prefix | Character string to select variables that start with this pattern | 
| check_text | Character string of the response to count. Default is "Checked" | 
| sep | Character string to collapse the responses by. Default is ", " | 
| data_labels | A data frame or tibble with columns, 'field_name' and 'checkbox_choice'. Used to replace variable names with checkbox labels. | 
a tble_df
#### Example 1 --------------------------------
library(dplyr)
library(tibble)
library(tidyr)
df <- tibble::tibble(
  id = c(1:100),
  group = sample(c("A", "B", "C"), size = 100, replace = TRUE),
  preferred_color___1 = sample(c("Checked", "Unchecked"), size = 100, replace = TRUE),
  preferred_color___2 = sample(c("Checked", "Unchecked"), size = 100, replace = TRUE),
  preferred_color___3 = sample(c("Checked", "Unchecked"), size = 100, replace = TRUE),
  preferred_color___4 = sample(c("Checked", "Unchecked"), size = 100, replace = TRUE),
  preferred_color___5 = sample(c("Checked", "Unchecked"), size = 100, replace = TRUE)) %>%
  mutate(group = factor(group,
                        levels = c("A", "B", "C")))
var_labels <- tibble::tribble(
  ~field_name, ~checkbox_choice,
  "preferred_color___1",           "Blue",
  "preferred_color___2",          "Green",
  "preferred_color___3",         "Orange",
  "preferred_color___4",            "Red",
  "preferred_color___5",         "Yellow"
)
var_labels
combine_checkboxes(data = df,
                   id_var = id,
                   prefix = "preferred_color___")
combine_checkboxes(data = df,
                   id_var = id,
                   prefix = "preferred_color___",
                   data_labels = var_labels)
combine_checkboxes(data = df,
                   id_var = id,
                   prefix = "preferred_color___",
                   data_labels = var_labels,
                   sep = "-")
#### Example 2 --------------------------------
library(dplyr)
library(tibble)
library(tidyr)
df2 <- tibble::tibble(
  record_id = c(1:100),
  gender = sample(c("Female", "Male"),
                  size = 100,
                  replace = TRUE),
  gender_other = NA,
  age = sample(c(18:85),
               size = 100,
               replace = TRUE),
  education = sample(c("High-school", "College", "Graduate school"),
                     size = 100,
                     replace = TRUE),
  ethnicity = sample(c("Hispanic", "Non-hispanic"),
                     size = 100,
                     replace = TRUE),
  key = sample(c("race___1", "race___2", "race___3",
                 "race___4", "race___5", "race___6", "race___98"),
               size = 100,
               replace = TRUE),
  value = "Checked",
  income = sample(c(20000:120000),
                  size = 100,
                  replace = TRUE),
  marital_status = sample(c("Married", "Single"),
                          size = 100,
                          replace = TRUE),
  survey_complete = sample(c("Complete", "Not complete"),
                           size = 100,
                           replace = TRUE)) %>%
  mutate(key = factor(key,
                      levels = c("race___1", "race___2", "race___3",
                                 "race___4", "race___5", "race___6",
                                 "race___98"))) %>%
  tidyr::spread(.,
                key = "key",
                value = "value") %>%
  mutate_at(.vars = vars(race___1:race___98),
            .funs = list(~ tidyr::replace_na(., "Unchecked")))
data_labels <- tibble::tribble(
        ~field_name,                      ~checkbox_choice,
        "record_id",                                    NA,
           "gender",                                    NA,
     "gender_other",                                    NA,
              "age",                                    NA,
        "education",                                    NA,
        "ethnicity",                                    NA,
         "race___1",                               "White",
         "race___2",           "Black or African-American",
         "race___3",    "American Indian or Alaska Native",
         "race___4",                               "Asian",
         "race___5", "Native Hawaiian or Pacific Islander",
         "race___6",                               "Other",
        "race___98",                "Prefer not to answer",
       "race_other",                                    NA,
           "income",                                    NA,
   "marital_status",                                    NA,
  "survey_complete",                                    NA
  )
df2
combine_checkboxes(data = df2,
                   id_var = record_id,
                   prefix = "race___")
combine_checkboxes(data = df2,
                   id_var = record_id,
                   prefix = "race___",
                   data_labels = data_labels)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.