Hallo,
Wo sehe ich welche umgepolt werden?
Wie?
Du weißt doch, welche Items revers sind.
Und dies hatte ich ja als Erklärung geschrieben.
"Normale" Teilfragen mit den Codes "N01", "N03", "N05",...
"Reverse" Teilfragen mit den Codes "R02", "R04",...
Als Lektüre dazu:
Handbuch ExpressionScript, speziell
Implementierte Funktionen
[url]
www.limesurvey.org/manual/ExpressionScri...mplemented_functions
[/url]
that
[url]
www.limesurvey.org/manual/ExpressionScri...#.22That.22_variable
[/url]
Und meinetwegen mein Tutorial 4: Gleichungen, Zufall,..., Kap. 1.3.1.
[url]
forums.limesurvey.org/forum/german-forum...ungen,-zufall#240746
[/url]
Dann solltest Du einfach einmal eine Frage vom Typ "Textanzeige" anlegen, in welcher Du die verschiedenen Beispiel aus dem Handbuch ausprobierst und dann neue, eigene kreierst.
In der Frageübersicht siehst Du ja sehr gut, wie diese Konstrukte mit "that" aufgelöst werden.
Und wenn Du einmal diese Formel aufdröselst, wird sie ganz einfach.
Hier wird stillschweigend angenommen, dass es eine Skala von 1-5 ist; daher wird eine reverses Item durch (6-Wert) berechnet.
Ich werde diese Formel einmal umgekehrt konstruieren.
Wie würde man vorgehen?
- Man addiert alle "Normalen" Items.
- Dazu addiert man alle "Inversen" Items, indem man deren Wert von 6 abzieht.
- Danach dividiert man die Summe durch die Anzahl der Items als Mittelwert.
- Man rundet diesen auf die gewünschte Stellenzahl.
Also
Man addiert alle "Normalen" Items.
Normal1 + Normal3 + Normal5 + Normal6
Dazu addiert man alle "Reversen" Items, indem man deren Wert von 6 abzieht.
Normal1 + Normal3 + Normal5 + Normal6 + (6- Revers2) + (6-Revers4)
Danach dividiert man die Summe durch die Anzahl der Items als Mittelwert.
(Normal1 + Normal3 + Normal5 + Normal6 + (6- Revers2) + (6-Revers4)) / 6
Man rundet diesen auf die gewünschte Stellenzahl.
round((Normal1 + Normal3 + Normal5 + Normal6 + (6 - Revers2) + (6 -Revers4)) / 6 , 2)
Und jetzt kommt ein bisschen Schulmathematik
round((Normal1 + Normal3 + Normal5 + Normal6 + (6 - Revers2) + (6 - Revers4)) / 6 , 2)
round((Normal1 + Normal3 + Normal5 + Normal6 + (6 + 6) - (Revers2 + Revers4)) / 6 , 2)
round((Normal1 + Normal3 + Normal5 + Normal6 + 12 - (Revers2 + Revers4)) / 6 , 2)
Und nun die Benutzung der that-Variablen
sum(that.Q1.sq_N) summiert alle Teilfragen deren Code ein "N" enthält
sum(that.Q1.sq_R) summiert alle Teilfragen deren Code ein "R" enthält
round((sum(that.Q1.sq_N.NAOK) + 12 - sum(that.Q1.sq_R.NAOK)) / 6 , 2)
Man erkennt also, dass diese "12" daraus resultiert, dass es 2 revese Items gibt.
Jetzt werden diese drei Einzelsummanden noch einmal mit der Summenfunktion aufsummiert
round(sum(sum(that.Q1.sq_N.NAOK),12, -1*sum(that.Q1.sq_R.NAOK)) / 6 , 2)
Und schon sind wir am Ende.
Im Falle von Pflichtfragen ist "NAOK" eigentlich nicht notwendig.
Bei anderen aber unerlässlich, da ansonsten die Summe - im Falle eines fehlenden Wertes - undefiniert sein würde.
Natürlich kannst Du dies alles auch lassen und die Summanden einmzeln hinschreiben.
Aber mit dieser Formel (und besonders mit der für generelle Fälle) geht es sicherlich schneller.
Joffm
P.S.
finde die Codes recht kompliziert
Codes sind nur kompliziert, wenn Du sie kompliziert machst. Ich fonde diese Vorgabecodes auch ziemlich lästig.
In Deinen Konto-Einstellungen (oben rechts) kannst Du dies aber ändern.
Ich persönlich nutze gerne
G1, G2, G3,... für Gruppen
Q1, Q2,... oder F1, F2,... für Fragen
Y001, Y002, und X001, X002 für die zwei Achsen einer Matrix(Texte)
Ansonsten numerische Codes für Teilfragen oder Antwortoptionen.
Ausnahmen siehe oben: Wenn es aus bestimmten Gründen sinnvoll ist, Teilfragen mithilfe geschickter Kodierung kenntlich zu machen.