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

  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 dichotomous).


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


Ananda Mahto; implemented in this package (and tweaked a bit) by Gjalt-Jorn Peters.

Maintainer: Gjalt-Jorn Peters


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