Welcome to the LimeSurvey Community Forum

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

Doppelte Zufallsauswahl basierend auf Mehrfachantwort

  • Nessias
  • Nessias's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 years 2 months ago #212343 by Nessias
Hallo liebes Forum,

ich habe folgendes Problem:
Im Anschluss an eine Mehrfachantwort (Nutzung von versch. Angeboten) möchte ich gern eine Bewertung anschließen. Dabei sollen im Falle, dass bei der Mehrfachantwort 3 oder mehr "Angebote" angekreuzt wurden, 2 dieser "Angebote" zufällig ausgewählt und dann bewertet werden.
Ich schaffe es schon, ein Angebot zufällig auszuwählen, aber das zweite fehlt mir noch.
Momentan folge ich einem Vorschlag von "Joffm" und gehe wie folgt vor:
(@Joffm: Vielen Dank nochmal für die Hilfe damals)

- join-Statement zur Erstellung eines Strings mit den Codes aller genutzen Angebote
- count-Statement zur Feststellung, wie viele Angebote überhaupt genutzt wurden
- erstellen einer Zufallszahl zwischen 1 und der Anzahl genutzter Angebote
- substr-Statement um das zufällig ausgewählte Angebot aus dem zu Beginn erstellten String auszuschneiden.

Meine Idee wäre nun, einen weiteren String zu erstellen, der sozusagen das erste zufällig ausgewählte Angebot nicht mehr enthält und dann die 3 letzten Schritte von oben zu wiederholen.
Also dann wieder count - Zufallszahl - ausschneiden - fertig.
Nun meine Frage:
Wie kann ich aus dem ersten String den Code, den ich durch die Zufallsauswahl ausgewählt habe, ausschneiden, um die Prozedur zu wiederholen? Gelingt das über einen weiteren substr-Befehl?

Vielen Dank schon mal im Voraus.

Beste Grüße
Nessias
The topic has been locked.
  • Nessias
  • Nessias's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 years 2 months ago - 3 years 2 months ago #212347 by Nessias

Meine Idee wäre nun, einen weiteren String zu erstellen, der sozusagen das erste zufällig ausgewählte Angebot nicht mehr enthält und dann die 3 letzten Schritte von oben zu wiederholen.Also dann wieder count - Zufallszahl - ausschneiden - fertig.

Oder kann ich einfach zwei Zufallszahlen ausgeben lassen? Geht doch sicher auch. Und dann beide Zufallszahlen ausschneiden.

Ich arbeite übrigens mit LS Version 3.23.7+201006
 
Last edit: 3 years 2 months ago by Nessias.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 months ago - 3 years 2 months ago #212362 by Joffm
Hallo,

Meine Idee wäre nun, einen weiteren String zu erstellen, der sozusagen das erste zufällig ausgewählte Angebot nicht mehr enthält und dann die 3 letzten Schritte von oben zu wiederholen.
Also dann wieder count - Zufallszahl - ausschneiden - fertig.
Nun meine Frage:
Wie kann ich aus dem ersten String den Code, den ich durch die Zufallsauswahl ausgewählt habe, ausschneiden, um die Prozedur zu wiederholen? Gelingt das über einen weiteren substr-Befehl?

Schau einmal hier - sogar für drei Objekte
[url] forums.limesurvey.org/forum/german-forum...zufallszahlen#209701 [/url]

Punkt 2 ist der Entscheidende.
Und eqBase1 enthält eben nur den string mit den ausgewählten Objekten.


Oder Du verwurstest eines dieser beiden Beispiele.
 

File Attachment:

File Name: limesurvey...4421.lss
File Size:39 KB

Frag mich aber nichts Genaueres darüber! Ich verstehe sie nur zur Hälfte (und das ist geprahlt).
Ich bin eben gut in "Gleichungen", javascript ist nicht so mein Freund.

Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 2 months ago by Joffm.
The topic has been locked.
  • Nessias
  • Nessias's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 years 2 months ago - 3 years 2 months ago #212402 by Nessias
Hallo Joffm,

weider einmal vielen lieben Dank für die schnelle und hilfreiche Antwort.
Ich kann das Beispiel sogar größtenteils nachvollziehen.
Leider muss sich bei mir irgendwo ein Fehler eingeschlichen haben. Der erste String funktioniert, die erste Zufallsauswahl auch. Die erste Zahl, die ausgegeben werden soll, wird jedoch offensichtlich nicht korrekt gezogen, sodass im Anschluss dann auch der zweite String, der ja die erste Zufallszahl nicht mehr enthalten soll, auch nicht korrekt erstellt wird.
Das Ergebnis sieht bei mir wie folgt aus (ich hab den jeweiligen Code immer als Hinweis in der Frage notiert, damit man die Rechenschritte besser nachvollziehen kann): s. Screenshot

Die genutzen Angebote, aus denen schließlich zwei zufällig ausgewählt werden sollten, sind in diesem Beispiel der Einfachheit halber die 1, 2, 3 und 4.
Wie gesagt, der Fehler liegt ganz offensichtlich bei der Variable eqZahl1. Da hier keine angezeigt wird, gehe ich davon aus, dass auch keine erstellt wird. Folglich können die anschließenden Schritte ebenfalls nicht richtig ausgeführt werden.
Hier die Gleichungen zu den 6 Variablen (ich habe sie aus dem von Dir gesendenten Beispiel übertragen forums.limesurvey.org/forum/german-forum...zufallszahlen#209701):

eqBase1: {join(if(F4_1 == "Y","1",""),if(F4_2 == "Y","2",""), if(F4_3 == "Y","3",""), if(F4_4 == "Y","4",""), if(F4_5 == "Y","5",""), if(F4_6 == "Y","6",""), if(F4_7 == "Y","7",""), if(F4_8 == "Y","8",""))}
eqRand1: {if(is_empty(eqRand1),rand(1,strlen(eqBase1)),eqRand1)}
eqZahl1: {substr(eqBase1,sum(eqRand1,-1),1)}
eqBase2: {str_replace(eqZahl1,"",eqBase1)}
eqRand2: {if(is_empty(eqRand2),rand(1,strlen(eqBase2)),eqRand2)}
eqZahl2: {substr(eqBase2,sum(eqRand2,-1),1)}

Ich kann den Fehler einfach nicht finden bzw. verstehe nicht, woran es liegt.
Solange die beiden Zufallszahlen passen würden, wäre mir der Rest auch tatsächlich egal. Leider passen die aber nicht.

Hast Du vielleicht noch eine Idee?

Vorab schon einmal vielen Dank für die wie immer sehr kompetente Hilfe.

Beste Grüße
Last edit: 3 years 2 months ago by Nessias.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 months ago #212406 by Joffm
Woher soll ich eine Idee haben, wenn ich nicht sehe, was Du "getrieben" hast.

Also: lss Export.

Bis dann
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The topic has been locked.
  • Nessias
  • Nessias's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 years 2 months ago #212410 by Nessias
Sorry. Hier kommt die .lss
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 months ago - 3 years 2 months ago #212415 by Joffm
Das ist aber nicht die Umfrage, auf der Dein screenshot beruht.
Oder?

Übrigens: Wie zeigst Du die Umfrage an?
"Frage für Frage" oder "Gruppe für Gruppe"?
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 2 months ago by Joffm.
The topic has been locked.
  • Joffm
  • Joffm's Avatar
  • Offline
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
3 years 2 months ago - 3 years 2 months ago #212417 by Joffm
So, ich habe Dir einmal ein Beispiel geschickt.

Die erste Geschichte funktioniert nur bei "Frage für Frage", ansonsten müsste man jede Gleichung in eine separate Gruppe setzen.
Dafür funktioniert G0a auch bei "Gruppe für Gruppe", und ist darüberhinaus auch noch kürzer. (Hier noch für drei Zahlen.

Der Rest unten dient nur der Demonstration, aber auch schon auf der zweiten -Matrizen - Lösung.
 

File Attachment:

File Name: limesurvey...8429.lss
File Size:47 KB


Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 3 years 2 months ago by Joffm.
The following user(s) said Thank You: Nessias
The topic has been locked.
  • Nessias
  • Nessias's Avatar Topic Author
  • Offline
  • Senior Member
  • Senior Member
More
3 years 1 month ago #212568 by Nessias
Vielen Dank Joffm, Du hast mir wieder einmal sehr geholfen!
The topic has been locked.
Moderators: Joffm

Lime-years ahead

Online-surveys for every purse and purpose