0 votes
in SoSci Survey (dt.) by s222544 (565 points)

Hallo SoSci Survey Support,

vielen Dank für die Unterstützung in meinem Projekt.

In meinem Zufallsgenerator EX03 sind 14 Reihen mit jeweils 3 Renditezahlen eingespeist (durch Komma voneinander getrennt), zum Beispiel: 01 = 1.9%, 6.11%, -0.12%

Es werden 4 verschiedene Reihen pro Fragebogen gezogen. EX04 ist die interne Variable mit 4 Kennungen.

Im Fragebogen möchte ich die als Reihe gezogenen Werte untereinander präsentieren, so:

<p>Die Renditeveränderung betragen:</p>
<p>Wertpapier 1: value('EX04_01[0]')</p>
<p>Wertpapier 2: value('EX04_01[1]')</p>
<p>Wertpapier 3: value('EX04_01[2]')</p>

Auf einer anderen Seite im Fragebogen soll dann die nächstgezogene Zahl präsentiert werden:

<p>Die Renditeveränderung betragen:</p>
<p>Wertpapier 1: value('EX04_02[0]')</p>
<p>Wertpapier 2: value('EX04_02[1]')</p>
<p>Wertpapier 3: value('EX04_02[2]')</p>

Die Renditeveränderungen sollten im HTML Code angezeigt werden.

usw. mit allen 4 gezogenen Reihen aus dem Zufallsgenerator.

Leider funktioniert diese Umsetzung nicht. Ich bitte um Hilfe in der richtigen Umsetzung.

Vielen Dank im Voraus!

1 Answer

0 votes
by SoSci Survey (305k points)

Bitte legen sie zusätzlich eine interne Variable an (hier exemplarisch IV01) mit 3 Variablen. Dann können Sie die Komma-Liste einfach in separate Variablen speichern.

$rnd = value('EX04', 'csv');
putList('IV01', $rnd);

Anschließend können Sie value('IV01_01) etc. verwenden.

by s222544 (565 points)
Vielen Dank für den PHP Code, habe ich so umgesetzt.
Leider bekomme ich den Fehler im Debug Modus angezeigt, obwohl Variable EX04 existiert und putList('EX04', array_values(valueList('EX03', NULL, 'label'))); im Fragebogen zusammenstellen auch existiert.
Hier ein Link zur betroffenen Seite: https://www.soscisurvey.de/reb/index.php?i=GZ68IJRU8FRL&rnd=NZPU

Vielen Dank!
by SoSci Survey (305k points)
Könnte es sein, dass Sie pro Interview mehr als einen Zettel in EX04 ziehen? Wenn ja, ist das beabsichtigt? Warum?
by s222544 (565 points)
Ja, ich ziehe pro Fragebogen 4 Zettel (aus 14 vorhandenen), d.h. 4 Reihen pro Fragebogen. Dies ist beabsichtigt. Der Hauptgrund dafür ist: mehr Observationen - wie ein Proband auf mehrere, unterschiedliche Szenarien reagiert, auch um Effekte besser zu kennzeichnen.

Weil ich 4 Zettel ziehe, muss ich 4 unterschiedlich gekennzeichnete Variablen mit je drei Kennungen (für jede der drei gezogenen Zahlen pro Reihe) haben?

Vielen Dank!
by SoSci Survey (305k points)
> Ja, ich ziehe pro Fragebogen 4 Zettel (aus 14 vorhandenen), d.h. 4 Reihen pro Fragebogen

Dann brauchen Sie auch 4 Sets interner Variablen und müssen beim Umspeichern entsprechend immer angeben, welche Ziehung Sie gerade verwenden möchten, z.B.

$rnd = value('EX04x01', 'csv');
putList('IV01', $rnd);

> Weil ich 4 Zettel ziehe, muss ich 4 unterschiedlich gekennzeichnete Variablen mit je drei Kennungen (für jede der drei gezogenen Zahlen pro Reihe) haben?

Genau, Nummer zwei dann also

$rnd = value('EX04x02', 'csv');
putList('IV02', $rnd);
by s222544 (565 points)
Vielen Dank!

Habe jetzt EX04x01, EX04x02, EX04x03 und EX04x04 als EX04, EX06, EX07 und EX08 gekennzeichnet - alle interne Variablen mit 4 Kennungen.

Habe auch interne Variablen EX05x01,  EX05x02, EX05x03 und EX05x04 als EX05, EX09, EX10 und EX11 gekennzeichnet  - alle interne Variablen mit 3  Kennungen (für die drei gezogenen Zahlen pro Reihe).

Der erste Text bleibt als
$rnd = value('EX04', 'csv');
putList('EX05', $rnd);

weil EX04 EX04x01 ist und EX05 als EX05x01 definiert ist.

Trotzdem bleibt der Fehler "Die Variable EX04 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden." bestehen.

Könnten Sie mir bitte helfen?

Liegt der Fehler vielleicht hier: putList('EX04', array_values(valueList('EX03', NULL, 'label'))); ? Diese Zeile hatte ich in einem früheren Projekt.

Vielen Dank!
by SoSci Survey (305k points)
> Habe jetzt EX04x01, EX04x02, EX04x03 und EX04x04 als EX04, EX06, EX07 und EX08 gekennzeichnet - alle interne Variablen mit 4 Kennungen.

Hmm ... eigentlich wäre es schlauer, direkt den Zufallsgenerator auszulesen. Also:

$rnd = value('EX03x01', 'csv');
putList('EX05', $rnd);

Das mehrfache Umkopieren in interne Variablen ist nur wenig sinnvoll, das hatte ich oben übersehen. Ich hatte gedacht, EX04 sei der Zufallsgenerator.

> Liegt der Fehler vielleicht hier

Nicht auszuschließen, aber m.E. ist diese Zeile auch nicht erforderlich. Das ist das besagte Umkopieren.
by s222544 (565 points)
Vielen Dank!

Wie kann ich den Zufallsgenerator EX03 mehrfach auslesen? Das heißt, was bedeutet EX03x01, folglich wie bekomme ich EX03x02 bis EX03x04 hin? Wenn ich den Zufallsgenerator 4 mal dupliziere (für x02, x03 und x04), kriege ich doch immer wieder andere Ziehungen (von den 14 eingespeisten..)

Ich dachte früher immer, dass die Ziehung(en) des Zufallsgenerators mittels putlist immer in interne Variablen abgespeichert werden müssen.
by SoSci Survey (305k points)
> Wie kann ich den Zufallsgenerator EX03 mehrfach auslesen?

Mit value() ... so oft Sie wollen.

> Das heißt, was bedeutet EX03x01

In dieser Variable wird die erste Ihrer 4 Ziehungen gespeichert, in EX03x02 die zweite u.s.w. Die Ziehung aller 4 Werte/Zettel passiert direkt dort, wo der Zufallsgenerator eingebunden ist.

> Wenn ich den Zufallsgenerator 4 mal dupliziere

Nein, bitte nicht.

> Ich dachte früher immer, dass die Ziehung(en) des Zufallsgenerators mittels putlist immer in interne Variablen abgespeichert werden müssen.

Das war vor langer Zeit mal so, als es noch keinen Zufallsgenerator gab, sondern nur die Urne. Der Zufallsgenerator bringt seine internen Variablen quasi direkt mit.
by s222544 (565 points)
Vielen Dank für Ihre Unterstützung!
Sie schreiben: "In dieser Variable wird die erste Ihrer 4 Ziehungen gespeichert, in EX03x02 die zweite u.s.w. Die Ziehung aller 4 Werte/Zettel passiert direkt dort, wo der Zufallsgenerator eingebunden ist."

Derzeit ist EX03 mein Zufallsgenerator mit 14 Zeilen von denen pro Fragebogen 4 Zettel gezogen werden. In Ihrer Antwort steht "in dieser Variable", heißt, dass ich brauche doch eine interne Variable (x4) zusätzlich zu einem Zufallsgenerator?

Dürfte ich Sie bitte um ein Code Beispiel bitten zur Verdeutlichung?

Vielen Dank!
by SoSci Survey (305k points)
Der Zufallsgenerator erstellt automatisch Variablen im Datensatz. Bitte schauen Sie mal in den Datensatz (Erhobene Daten -> Daten ansehen), was da bei EX03x01, EX03x02, EX03x03 und EX03x04 steht.

Die zusätzlichen 4x3 internen Variablen empfehle ich, damit Sie die Komma-sepatierten Zeilen nochmal in einzelne Werte auftrennen können.
by s222544 (565 points)
Vielen Dank für den Hinweis!

Bei EX03x01 bis x04 stehen Zahlen (1-14), die die Reihe aus dem Zufallsgenerator anzeigen, die gezogen wurde.

Bei EX04_01 bis EX04_04 stehen die drei Prozentzahlen, die unter der jeweiligen Reihe (Bsp. 3 aus EX03x01 bis x04) gezogen wurden.

Soweit so gut, nur wie bekomme ich die Zahlen korrekt im Fragebogen angezeigt? Ich denke EX04_01 bis _04 sind sinnvoll und sollten beibehalten werden.

Vielen Dank!
by SoSci Survey (305k points)
> Bei EX03x01 bis x04 stehen Zahlen (1-14), die die Reihe aus dem Zufallsgenerator anzeigen, die gezogen wurde.

Passt. Der "csv" Schalter im PHP-Code sollte die Labels verwenden.

> Ich denke EX04_01 bis _04 sind sinnvoll und sollten beibehalten werden.

Wenn der Zugrundeliegende Code folgender ist, dann ja.

$rnd = value('EX03x01', 'csv');
putList('EX04', $rnd);

Die Anzeige sollte dann ja trivial sein, z.B.

html('
  <p>Wertpapier 1: '.value('EX04_01').'</p>
  <p>Wertpapier 2: '.value('EX04_02').'</p>
  <p>Wertpapier 3: '.value('EX04_03').'</p>
');

Im Prinzip geht es natürlich auch ohne Umweg über EX04.

$rnd = value('EX03x01', 'csv');
html('
  <p>Wertpapier 1: '.$rnd[0].'</p>
  <p>Wertpapier 2: '.$rnd[1].'</p>
  <p>Wertpapier 3: '.$rnd[2].'</p>
');
by s222544 (565 points)
Vielen Dank!
Bei den erhobenen Daten unter EX04_01 steht die erste gezogene Zahl einzeln, bei _02 die zweite und bei _03 die dritte.
Der Fehler im Fragebogen ist auch verschwunden. Jedoch wird anstatt des Wertes bei   
<p>Wertpapier 1: '.value('EX04_01').'</p>
  <p>Wertpapier 2: '.value('EX04_02').'</p>
  <p>Wertpapier 3: '.value('EX04_03').'</p>

das hier angezeigt:
Wertpapier 1: value('EX04_01')

Wertpapier 2: value('EX04_02')

Wertpapier 3: value('EX04_03')

also einfach nur value('EX04_) anstatt der korrekten Zahl.

Wie könnte ich das beheben?

Vielen Dank im Voraus!
by SoSci Survey (305k points)
Wie sieht denn Ihr PHP-Code genau aus?
by s222544 (565 points)
Ich habe keinen PHP Code, ich habe den folgenden HTML Code (damit ich den Text anzeigen kann):

<p> <strong> Die folgenden Marktentwicklungen </strong> sind im Laufe von einem Jahr aufgetreten. Beim Kunden gab es während dieser Zeit keine Veränderungen.</p>

<p>Wertpapier 1: 'value('EX04_01')'</p>

<p> Wertpapier 2:'value('EX04_02')'</p>

<p> Wertpapier 3: '.value('EX04_03')'</p>
<p><p>
<p><p>
<p style="margin-top: 2em"></p>

Die verschiedenen Varianten von value führen alle nicht zur korrekten Anzeige.

Vielen Dank für Ihre Hilfe!
by SoSci Survey (305k points)
> Ich habe keinen PHP Code, ich habe den folgenden HTML Code (damit ich den Text anzeigen kann):

HTML-Code kann aber keine PHP-Funktionen verwenden, deshalb wird es einfach nur als Text angezeigt. Wenn Sie beim HTML-Code bleiben möchten, dann verwenden Sie bitte Platzhalter.

<p>Wertpapier 1: %wert1%</p>
<p> Wertpapier 2: %wert2%</p>
<p> Wertpapier 3: %wert3%</p>

Und darüber/davor benötigen Sie dann noch PHP-Code, welcher die Platzhalter initialisiert.

replace('%wert1%', 'EX04_01', 'response');
replace('%wert2%', 'EX04_02', 'response');
replace('%wert3%', 'EX04_03', 'response');
by s222544 (565 points)
Vielen Dank für Ihre Antwort.

Ich habe den Code so umgesetzt. Leider kommen jetzt neue Probleme auf und ich bitte höflich um Ihre Hilfe.

Habe als PHP Code:
$rnd = value('EX03x01', 'csv');
putList('EX04', $rnd);

replace('%wert11%', 'EX04_01', 'response');
replace('%wert21%', 'EX04_02', 'response');
replace('%wert31%', 'EX04_03', 'response');


<p>Wert 1: %wert11%</p>

<p>Wert 2: %wert21%</p>

<p>Wert 3: %wert31%</p>


Die Fehler sind:
Die Funktion putList() kann den Werte an Position 4 nicht im Datensatz speichern, weil dafür eine Variable EX04_04 erforderlich wäre.

Die Funktion putList() kann den Werte an Position 5 nicht im Datensatz speichern, weil dafür eine Variable EX04_05 erforderlich wäre.

Die Funktion putList() kann den Werte an Position 6 nicht im Datensatz speichern, weil dafür eine Variable EX04_06 erforderlich wäre.

Bei den erhobenen Daten EX04_01 bis _03 sind jetzt die die drei gezogenen Zahlen aus der ersten Ziehung getrennt (pro Spalte eine ganze Zahl).

Ich möchte bitte die Fehler beheben und bei den gezogenen Zahlen aus dem Zufallsgenerator die Dezimalzahlen anzeigen (ohne Rundung wie sie gerade passiert).

Hier ein Link zur Seite: https://www.soscisurvey.de/reb/index.php?i=FK2TT6XMRTZK&rnd=JWNW

Vielen Dank für die Hilfe!
by SoSci Survey (305k points)
> Die Funktion putList() kann den Werte an Position 4 nicht im Datensatz speichern, weil dafür eine Variable EX04_04 erforderlich wäre.

Es sieht so aus, als wären in EX03x01 mehr als drei Werte? Was passiert denn, wenn Sie in EX04 einfach noch drei interne Variablen ergänzen? Was wird dort gespeichert?
by s222544 (565 points)
Vielen Dank!

Ich glaube das Problem liegt in Punkt/Komma, was im Zufallsgenerator eingespeichert ist.

Zum Beispiel im Zufallsgenerator ist "02 = 0,4%;  -12,35%; -1,84%" als zweite Reihe hinterlegt. Früher (gestern) hatte ich noch Punkte also "02= 0.4%, 12.35%; -1.84%", jedoch führte das zum Anzeigen von 0.4% (anstatt von üblich 0,4%) und somit zu Verwirrung bei Probanden im Pre-test.

Bei "02= 0.4%, 12.35%; -1.84%" gab es keine Probleme mit dem Abspeichern von EX03 und Anzeigen als EX04.

Gibt es eine Möglichkeit "02= 0.4%, 12.35%; -1.84%" im Zufallsgenerator zu lassen, aber 0,4% und  -12,35% und -1,84% im Fragebogen anzuzeigen?

Vielen Dank im Voraus!
by SoSci Survey (305k points)
Am einfachsten speichern Sie die Zahlen mit Punkt im Zufallsgenerator und ersetzen Sie das im Fragebogen:

replace('%wert11%', str_replace('.', ',', value('EX04_01')));
by s222544 (565 points)
Vielen Dank! Alles funktioniert!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...