Hi,
For these first steps you also can use a javascript solution.
Here I show only ExpressionScript.
1. Create a question of type long text. (QBase)
In the default answer enter your model in this form:
#
001182345765821268445612756
#
002752386452136621431851457
#
003345612348756432153247541
You see in red the version (three digits) followed by the 6 sets of 4 items
2. Create a random number from 1 to your number of versions (question type 'equation') (eqRand)
{if(is_empty(eqRand),rand(1,3),eqRand)}
3. Adjust this random number to 3 digits (question type 'equation') (eqRand2)
{if(eqRand<10,join('#00',eqRand),if(eqRand<100,join('#0',eqRand),join('#',eqRand)))}
4. Find the matching string in QBase (question type 'equation') (eqVersion)
{substr(QBase,strpos(QBase,eqRand2)+4,24)}
5. Create a question of type multiple short text (Set) with 6 subquestions 1,2,3,4,5,6 (=6 Sets); place it at the end of the group.
6. Split the string (from eqVersion) and assign it to the text question (question type 'equation') (eqSet)
{Set_1=substr(eqVersion,0,4)}
{Set_2=substr(eqVersion,4,4)}
{Set_3=substr(eqVersion,8,4)}
{Set_4=substr(eqVersion,12,4)}
{Set_5=substr(eqVersion,16,4)}
{Set_6=substr(eqVersion,20,4)}
These last two steps are not really necessary but they ease the piping of the texts.
All these questions are hidden.
As mentioned before all this can also be done in javascript
Rough idea:
- Create an array containing for all versions these 24 digit strings.
- Shuffle the array
- Take the first element and distribute 6x4 substrings into the multiple text question.
You will find a lot of examples here. You only have to adapt a little bit.
Now you may create 6 Groups, each with one question with the Maxdiff Layout. All groups get the same randomization group name.
And now you enter these four IF-constructs into the answer options of the first MaxDiff question
{if(substr(Set_1,0,1)=='1','Cooling performance',if(substr(Set_1,0,1)=='2','Energy efficiency',if(substr(Set_1,0,1)=='3','Trouble Free running',if(substr(Set_1,0,1)=='4','Looks of the air-conditioner', if(substr(Set_1,0,1)=='5','Very Low Noise level of the indoor unit',if(substr(Set_1,0,1)=='6','Compact Indoor unit size',if(substr(Set_1,0,1)=='7','Copper Coil reliability – Rust Free','Air throw – speed/ power for fast & even cooling')))))))}
{if(substr(Set_1,1,1)=='1','Cooling performance',if(substr(Set_1,1,1)=='2','Energy efficiency',if(substr(Set_1,1,1)=='3','Trouble Free running',if(substr(Set_1,1,1)=='4','Looks of the air-conditioner', if(substr(Set_1,1,1)=='5','Very Low Noise level of the indoor unit',if(substr(Set_1,1,1)=='6','Compact Indoor unit size',if(substr(Set_1,1,1)=='7','Copper Coil reliability – Rust Free','Air throw – speed/ power for fast & even cooling')))))))}
{if(substr(Set_1,2,1)=='1','Cooling performance',if(substr(Set_1,2,1)=='2','Energy efficiency',if(substr(Set_1,2,1)=='3','Trouble Free running',if(substr(Set_1,2,1)=='4','Looks of the air-conditioner', if(substr(Set_1,2,1)=='5','Very Low Noise level of the indoor unit',if(substr(Set_1,2,1)=='6','Compact Indoor unit size',if(substr(Set_1,2,1)=='7','Copper Coil reliability – Rust Free','Air throw – speed/ power for fast & even cooling')))))))}
{if(substr(Set_1,3,1)=='1','Cooling performance',if(substr(Set_1,3,1)=='2','Energy efficiency',if(substr(Set_1,3,1)=='3','Trouble Free running',if(substr(Set_1,3,1)=='4','Looks of the air-conditioner', if(substr(Set_1,3,1)=='5','Very Low Noise level of the indoor unit',if(substr(Set_1,3,1)=='6','Compact Indoor unit size',if(substr(Set_1,3,1)=='7','Copper Coil reliability – Rust Free','Air throw – speed/ power for fast & even cooling')))))))}
To enter the answer options into the second MaxDiff question you only have to Change "Set_1" to "Set_2", then "Set_3", and so on.
To analyze later, you have to check which item was displayed in which set at which place.
This all you see in the text question "Set".
This way you can restructure the dataset to match the requirements of the analysis.
Joffm
N.B.
IN this example the items in each question are in random order. If you do not want this just set the flag in the script to "false".