Crunch allows you to create a new categorical variable by combining the categories of another variable. For instance, you might want to recode a categorical variable with three categories small, medium, and large to one that has just small and large.

combine(variable, combinations = list(), ...)

combineCategories(variable, combinations = list(), ...)

combineResponses(variable, combinations = list(), ...)



Categorical, Categorical Array, or Multiple Response variable


list of named lists containing

  1. "categories": category ids or names for categorical types, or for multiple response, "responses": subvariable names, aliases, or positional indices;

  2. a "name" for the new category or response; and

  3. optionally, other category ("missing", "numeric_value") or subvariable ("alias", "description") attributes. If combinations is omitted, the resulting variable will essentially be a copy (but see copy() for a more natural way to copy variables.


Additional variable metadata for the new derived variable


A VariableDefinition that will create the new combined-category or -response derived variable. Categories/responses not referenced in combinations will be appended to the end of the combinations.


Categorical and categorical array variables can have their categories combined (by specifying categories in the combinations argument). Multiple response variables can only have their responses (or items) combined (by specifying responses in the combinations argument). Categorical array items are not able to be combined together (even by specifying responses).

dplyr users may experience a name conflict between crunch::combine() and dplyr:: combine(). To avoid this, you can either explicitly use the crunch:: prefix, or you can call combineCategories() and combineResponses(), provided for disambiguation.


if (FALSE) { ds$fav_pet2 <- combine(ds$fav_pet, name = "Pets (combined)", combinations = list( list(name = "Mammals", categories = c("Cat", "Dog")), list(name = "Reptiles", categories = c("Snake", "Lizard")) ) ) ds$pets_owned2 <- combine(ds$allpets, name = "Pets owned (collapsed)", combinations = list(list(name = "Mammals", responses = c("Cat", "Dog"))) ) }