As part of our core randomization options you have the ability to randomize or shuffle column and row order in a grid question. However, there is not a built-in feature to show a random subset of the rows in your grid question. Fortunately, it's pretty easy to script. We'll cover the steps to use a pretty simple script to accomplish just this. These steps assume a basic familiarity with Alchemer and programming.
There are two approaches you might want to take when randomly showing a subset of rows from the grid.
- You might want to simply show a reduced number of grid rows to reduce respondent burden and fatigue and ultimately gather better data. This script is covered below in Option 1.
- You can also show a subset of rows based on the selected options from a previous question. This script is covered below in Option 1.
Option 1: Show a random subset of rows
See this script in action in an example survey.
OR
Add a survey with this script and setup to your account.
Features and functions used in this script:
- Custom Scripting Action
- Radio Button Grid question (can be used with any grid)
- tableshuffle
- hidequestion
Set up your grid question. Our example grid question looks like the below.
In the interest of reducing respondent burden and fatigue, we only want to burden each respondent with responding to three of the ten rows in this grid question.
To set this up we added a Custom Script Action to the top of the page with the grid question and pasted the below script.
--Row IDs to be randomly hidden go here. Make sure they are comma separated, no spaces, and inside quotes. rowsHideRandom = {3,4,5,6,7,8,9,10,11,12} --Number of rows you want shown from the list above. No quotes or commas are needed. shown = 3 --Do not change after this line. shuffled=tableshuffle(rowsHideRandom) for key,question in pairs (shuffled) do hidequestion(question,true) end for i=1, shown do hidequestion(shuffled[i],false) end
Required Customizations
In the script above you will need to customize variables highlighted in yellow in order to make the script work in your survey.
rowsHideRandom - Replace this list with the question IDs for your grid rows.
shown - Change this to the number of rows you wish to show.
Option 2: Show rows that correspond to previously selected options
See this script in action in an example survey.
OR
Add a survey with this script and setup to your account.
Features and functions used in this script:
- Custom Scripting Action
- Checkboxes
- Radio Button Grid (can be used with any grid)
- gettablequestionskus
- hidequestion
- getalue
- table.insert
- tableshuffle
Set up your source question and follow-up grid question. Our example source and grid questions look like the below.
We only want to burden each respondent with responding to a maximum of three rows that correspond to their selections in the previous Checkbox question.
To set this up we added a Custom Script Action to the top of the page with the grid question and pasted the below script.
source = 2 -- Multiple choice source question ID targetgrid = 3 -- Target Grid question ID shown = 3 --select 3 to show -- Replace the key text with the text of your row headers and the numbers with the row question IDs vals = {} vals["United"] = 6 vals["Delta"] = 7 vals["Southwest"] = 8 vals["Frontier"] = 9 vals["American"] = 10 vals["Alaska"] = 11 vals["JetBlue"] = 12 vals["Air Canada"] = 13 vals["Virgin America"] = 14 vals["Continental"] = 15 vals["Spirit"] = 16 --Get all the IDs for each row in target grid and set each to being hidden targetskus = gettablequestionskus(targetgrid) for key,question in pairs (targetskus) do hidequestion(question,true) end options_selected = getvalue(source) -- get all options selected rowidselection = {} -- a new array to hold the row ids of the grid to randomize from for key,value in pairs(options_selected) do table.insert(rowidselection, vals[value]) end --shuffle the array shuffled = tableshuffle(rowidselection) --set the rows to show for i=1, shown do hidequestion(shuffled[i],false) end
Required Customizations
In the script above you will need to customize variables highlighted in yellow in order to make the script work in your survey.
source - The question ID of the source question you wish to use to determine which rows will show.
targetgrid - The question ID of the target grid you wish to affect.
shown - Number of random rows to be shown.
vals - Replace the key text with the text of your row headers; make sure to preserve the quotes. The value numbers with the row question IDs.
Scripting and Other Custom Solutions
We’re always happy to help you debug any documented script that is used as is. That said, we do not have the resources to write scripts on demand or to debug a customized script.
If you have customization ideas that you haven't figured out how to tackle, we're happy to be a sounding board for Alchemer features and functionality ideas that might meet your needs. Beyond this, check out our Professional Services; these folks have the scripting chops to help you to achieve what you are looking for!