Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

Bewertung der Umfrage zeigt nur Gesamtpunktzahl

  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 10 months ago - 3 years 10 months ago #201346 by Joffm
Hallo,
es wäre sicher gut gewesen, Du hättest einmal die Beispielstudien durchgearbeitet.
manual.limesurvey.org/ExpressionScript_sample_surveys

Jetzt zu Deinem Versuch die Punkte einer Gruppe mit EM zu berechnen.
Für die Funktion "sum" steht im Handbuch
sum Calculate the sum of values in an array number sum(arg1, arg2, ... argN)
Und Du willst die Assessment-Werte der einzelnen Fragen der Gruppe aufsummieren.
Den Assessment-Wert bekommst Du mit
Qcode.value the assessment value for the question if it is relevant (otherwise blank), or the text value if it is not a coded question
Naürlich mit NAOK, es können ja einige Fragen nicht beantwortet sein.

Also sieht Deine Funktion so aus (hängt natürlich vom Fragentyp ab, ich nehme einmal Einfachnennung
{sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}

Was die reservierten Variablen "this", "that" und "self" angeht, lies auch hier das Handbuch und studiere die Beispiele.
Nur kurz:
Wird hauptsächlich benutzt um Zeilen, Spalten, Zellen einer Matrix zu zählen, zu summieren, etc.
Denn in einer Matrix(Zahlen) mit der Kodierung der Zeilen "Y001", "Y002",... und der Spalten mit "X001", X002",... wird diese Form
{sum(that.Q1.sq_Y001)}
erweitert zu
{sum(that.Q1_Y001_X001,that.Q1_Y001_X002,that.Q1_Y001_X003,that.Q1_Y001_X004,...)}
und errechnet die Summe der ersten Zeile, während
{sum(that.Q1.sq_X001)}
die Summe der ersten Spalte errechnen würde.

Und der Unterschied zwischen "self" und "that"?
Wie der Name sagt, "self" berechnet die Frage, in welcher es benutzt wird, z.B. in Validierungen, oder als laufende Anzeige.
Dazu ist dann nicht die Angabe des Fragencodes notwendig, also nur
{sum(self.sq_Y001)}
"that" hingegen referiert eine andere Frage; daher ist hier der Fragencode notwendig.

Noch ein Wort zu Deinem Versuch mit "gid".
Im Handbuch steht
Qcode.gid the internal group number (not the sequential number) {gender.gid}
Dies zeigt also einfach den Code der Gruppe an.


Und wo schreibst Du diese obige Funktion hin?
Überall, wo Du etwas anzeigen willst.
Im Fragentext irgendeiner späteren Frage, in den Antwortoptionen einer späteren Frage, oder wie bei Dir, in der End-message.
Da würde dann etwas stehen wie
Ihr erreichter Score für die Gruppe 2 ist {sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}
Da musst Du Dich nicht mit Bewertungsregeln herumschlagen. Das ist alles.

Jetzt kommt ein weiterer Schritt:
Wenn Du mit Assessment arbeitest, werden diese Werte nicht in der Datenbank gespeichert.
In unserem Beispiel bisher auch nicht, der Wert wird ja nur angezeigt.
Um ihn zu speichern, und gleichzeitig eine Variable zu haben, mit der Du weiter rechnen kannst, legst Du eine oder mehrere Fragen vom Typ "Gleichung" an.
Nenne sie meinetwegen "Score1" (für den Score der ersten Gruppe)
in den Fragetext kommt nichts, nur die Funktion
{sum(Q1.valueNAOK,Q2.valueNAOK,Q3.valueNAOK,Q4.valueNAOK)}

Und für die zweite Gruppe analog;
Frage vom Typ "Gleichung", diesmal "Score2" genannt
{sum(Q11.valueNAOK,Q12.valueNAOK,Q13.valueNAOK,Q14.valueNAOK)} (wenn dies die Fragen der zweiten Gruppe sind)

Nun hast Du in der Datenbank zwei Spalten mit ebendiesen Namen und den Werten.
Außerdem kannst Du nun auch in Deiner End-Message darauf zurückgreifen.

Ihr erreichter Score für die Gruppe 1 ist {Score1}
Ihr erreichter Score für die Gruppe 2 ist {Score2}
Ihr Gesamt-Score ist {sum(Score1,Score2)}
Ihr Durchschnitts-Score ist {sum(Score1,Score2)/2}
Du kannst also vieles damit anstellen.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 10 months ago by Joffm.
The topic has been locked.
  • Warbreaker
  • Warbreaker's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
3 years 10 months ago #201348 by Warbreaker
Replied by Warbreaker on topic Bewertung der Umfrage zeigt nur Gesamtpunktzahl
Hey,

danke für die sehr ausführliche Beschreibung. Ich konnte die Werte nun anzeigen und es funktioniert alles bis auf den Fragentyp Mehrfachauswahl.

Da scheint .valueNOAK nicht zu klappen, ich habe jetzt 30 Minuten nach einer Lösung dafür im Handbuch gesucht und nichts gefunden. Weder zu einer Auflistung von Alternativen zu .value die auch bei Mehrfachauswahl funktionieren, noch zu Suchbegriffen wie Antworttypen oder Fragetypen und dergleichen.

Dann hab ich noch das hier gefunden: manual.limesurvey.org/Question_type_-_Multiple_choice

Da wird der assessment_value beschrieben, nur leider funktioniert der im QCode nicht...

Alles etwas enttäuschend dieses Handbuch.
Attachments:
The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 10 months ago #201358 by holch
Bei Mehrfachantwort kannst du natürlich nicht mit QID.valueNOAK zugreifen, denn die Antwortoptionen sind "Subquestions".

Also jedes Item wird praktisch wie eine JA/Nein-Frage behandelt.

D.h. du musst dem Expression-Manager auch sagen, welche Unterfrage dich interessiert.

Nehmen wir an deine Frage hat den Code "Q1" und deine Unterfragen "SQ001", "SQ002", etc.

Um auf die Unterfragen zuzugreifen, musst du also Q1_SQ001.valueNAOK, etc. verwenden (du hast da einen Dreher in NOAK).

B103.valueNAOK scheint ja zu funktionieren, B105.valueNAOK gibt ja eine klare Fehlermeldung, dass diese Variable nicht existiert.

Wenn du mal nicht weiss, wie man auf die Variable zugreift, dann würde ich mir das Question_logik file ansehen. Da wird es normalerweise klarer, wie die Variablen zu benennen sind.

Alles etwas enttäuschend dieses Handbuch.

Limesurvey ist Open Source, das Handbuch ist ein Wiki und du darfst gerne helfen es zu verbessern. Gute Leute sind da immer willkommen. :-)

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • holch
  • holch's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 10 months ago #201359 by holch
Und nochwas: Bei Multichoice-Fragen kannst du ja für jede Antwort nur immer den selben Assessment-Wert vergeben, du kannst also nicht sagen wenn X angekreuzt, dann 5 Punkte, wenn Y angekreuzt dann 1 Punkt.

Wenn du das willst, dann musst du das wieder mit einer Equation simulieren. Da du aber bisher sowieso nur mit Assessments gearbeitet hast, gehe ich davon aus, dass das für dich sowieso nicht relevant ist (denn mit Assessments hast du gar keine Möglichkeit, sowas umzusetzen).

Der Expression Manager sieht am Anfang etwas schwierig aus. Aber wenn du mal ein bisschen mit den Beispielen im Handbuch gespielt hast, dürftest du das relativ schnell raus haben und willst mit nichts mehr anderen arbeiten (Conditions kannste dann auch gleich über Bord werfen...).

I answer at the LimeSurvey forum in my spare time, I'm not a LimeSurvey GmbH employee.
No support via private message.

The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 10 months ago #201364 by Joffm

Limesurvey ist Open Source, das Handbuch ist ein Wiki und du darfst gerne helfen es zu verbessern. Gute Leute sind da immer willkommen.

Ach @holch: Warum nimmst Du mir die Worte aus dem Mund?


Und es ist auch ganz leicht, verschiedene Werte für Mehrfachnennungen zu summieren.

Diese sind ja so aufgebaut, dass jede Antwortmöglichkeit eine eigenständige Teilfrage ist, die mit "Ja" oder "Nein" beantwortet wird.

Daher wird hier zugegriffen durch "QCode_SubquestionCode".
Dies ist ja immer dasselbe Schema - in Matrizen ist es dann eben "QCode_YAchseCode_XAchseCode".
Und wenn man nicht sicher ist:
Studie aktivieren, Antworttabelle anschauen.
Da stehen zwar keine Daten, aber die Spaltenüberschrift sagt Dir, wie Du auf diese zugreifen kannst/musst.

So, jetzt haben wir eine Mehrfachennung ("Q1") und wollen den Antworten verschiedene Werte zuordnen.

SQ001: Ameise -> 1
SQ002: Biber -> 5
SQ003: Chinchilla -> 3
SQ004: Dachs -> 10
SQ005: Eidechse -> 2
SQ006: Flamingo ->17

Dann kann man das Ergebnis der Auswahl berechnen
{sum(if(Q1_SQ001.NAOK=="Y",1,0),if(Q1_SQ002.NAOK=="Y",5,0),if(Q1_SQ003.NAOK=="Y",3,0),if(Q1_SQ004.NAOK=="Y",10,0),if(Q1_SQ005.NAOK=="Y",2,0),if(Q1_SQ006.NAOK=="Y",17,0))}

Mit dem IF-Statement wird also im Falle, dass die Antwortoption gewählt wurde, der Wert gesetzt, ansonsten "0", und die sum-Funktion macht den Rest.

Hier übrigens noch etwas zu NAOK.
Du hast es wahrscheinlich schon gelesen, NAOK steht für "Not applicable is OK".
Dies ist immens wichtig, wenn Du summierst oder zählst. Normalerweise wird, wenn einer der Summanden fehlt, gar kein Ergebnis geliefert. Daher das NAOK.


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose