Creating a loop & merge question based on lowest rated statements in a matrix | XM Community
Skip to main content

I’ve got a matrix question with 10 scale points. There isn’t a specific cut-off, but I want participants to provide context around why they rated the lowest two statements the way they did.

 

I’m trying to find out how to plug the lowest-rated and then the second lowest-rated statements into a loop & merge. I was able to achieve this once before using a bunch of logic in the survey flow, but that time around I had a set cut-off value (i.e., select 2 statements rated below 3).

This time it’s just the lowest two statements. I’ve been looking around, and I’ve seen that some custom JS may be able to do this but I cannot find out how to do it and am very inexperienced with Java.

This is the question I want to take the lowest rated statements from
This is what I want to loop and merge 

 

The thing about using a matrix is that you will have ties for the lowest - there could be 1-11 rows with the same lowest score if you exclude straight liners as counting toward lowest.

If you’re interested, I have function, matrixHiLo, that finds the highest and lowest recodes along with their associated statements and scale points. It could be used to set up a loop for two of the lowest rated statements as long as there are two or more tied for lowest. If there are more that two assignment would be random least fill. Otherwise, the loop would just show the one lowest. Not exactly what you are asking for, but very close.


Thanks Tom, without authorization I am able to look into buying code but I’ll keep that in mind for future reference. Do you, or does anyone else, know of a way to accomplish this without code?


Without coding (JS or web service), you can use a series of survey flow branches to find the lowest rating.


Thanks,

Do you know what that would look like? As I picture it, it would be a large multitude of branching paths to make sure that the statement being chosen is the lowest rated. Or maybe I’m missing something?


First you need to find the lowest scale point recode. So, you need scale points - 1 branches that set the lowest recode. Then you can display the lowest 2 statements in a question by using choice display logic based on lowest recode and advanced randomization.


An relevant no-code solution is to recode value of your matrix question, then use form field for the reason question. Set display logic of each statement only when it’s recode value are <= the rest

Make sure you use field code on the right side of the inequation

This will display the lowest statementS. 

If the lowest are just statement and you want to find the second lowest to be it’s friend, theoretically its still possible using the scan & update algorithm with the rule:

  • If the current element is smaller than first, then update first and second
  • Else if the current element is smaller than second then update second.

I was about to make an example for you using only branch logic and embedded data set but it’s kinda cumbersome & awkward


@TomG 

“Display the lowest 2 statements in a question by using choice display logic based on lowest recode and advanced randomization”. Enlighten me please 🙏


Thanks for the detailed reply! Does this include the case wherein someone scores two statements as the lowest score?


@JesseN 

If someone have for example like 4 statement at the same lowest scores, it will ask reason for all 4 of them. If you have 1 lowest, it will ask just for that 1 statement


@TomG

“Display the lowest 2 statements in a question by using choice display logic based on lowest recode and advanced randomization”. Enlighten me please 🙏

You can use advanced randomization to randomly display X statements evenly distributed. 

So the displayed statements would first be limited to lowest by display logic them among those limited to 2 by advanced randomization.


Leave a Reply