The multiResponse function mimics the behavior of the table produced by SPSS for multiple response questions.

multiResponse(data, items = NULL, regex = NULL, perlRegex = TRUE,
  endorsedOption = 1)



Dataframe containing the variables to display.

items, regex

Arguments items and regex can be used to specify which variables to process. items should contain the variable (column) names (or indices), and regex should contain a regular expression used to match to the column names of the dataframe. If none is provided, all variables in the dataframe are processed.


Whether to use the perl engine to match the regex.


Which value represents the endorsed option (note that producing this kind of table requires dichotomous items, where each variable is either endorsed or not endorsed, so this is also a way to treat other variables as dichotomour).


A dataframe with columns Option, Frequency, Percentage, and Percentage of (X) cases, where X is the number of cases.


This function is based on the excellent and extensive Stack Exchange answer by Ananda Mahto at


multiResponse(mtcars, c('vs', 'am'));
#> Option Frequency Percentage of responses Percentage of (32) cases #> 1 vs 14 51.85185 43.750 #> 2 am 13 48.14815 40.625 #> 3 Total 27 100.00000 84.375