- Posts: 25
- Thank you received: 0
Welcome to the LimeSurvey Community Forum
Ask the community, share ideas, and connect with other LimeSurvey users!
Matrix filter aus Fragentyp Matrix
- Wrankmore_A
- Topic Author
- Offline
- Junior Member
Less
More
7 years 5 months ago #144191
by Wrankmore_A
Replied by Wrankmore_A on topic Matrix filter aus Fragentyp Matrix
Attachments:
The topic has been locked.
- Joffm
- Away
- LimeSurvey Community Team
Less
More
- Posts: 12982
- Thank you received: 3993
7 years 5 months ago - 7 years 5 months ago #144208
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Matrix filter aus Fragentyp Matrix
Hallo,
ja, da hast Du Recht.
Aber im Grunde ist es zwar umständlich, aber nicht besonders.
Im Programm, das wir professionell nutzen, kommt dies auch häufig vor.
Das machen wir dann in EXCEL mit einer Formel, die dann alle Bedingungen erstellt.
Dann muss man sie nur in LS einkopieren.
Das macht dann weniger Schreibarbeit.
Da dies bei Deinen 41 Kräutern natürlich sehr lang wird, habe ich auch schon darüber nachgedacht, eine dazwischengeschobene Gleichung zu nutzen.
Ich bin inzwischen einen Schritt weiter:
Das "sq" in {sum(that.q4.sq_C.NAOK)} ist nämlich nicht einfach die Bezeichnung der Subquestion, also "sq_C", sondern es ist Bestandteil der Funktion.
Darauf muss man erst einmal kommen.
Ich kann also in einer Matrix (Zahlen) die Zeilensumme ausrechen durch: "sum(that.D1.sq_SQ001.NAOK)"
Und um zu gucken, ob in einer Zeile irgendetwas steht, habe ich mal versucht:
if(!is_empty(that.D1.sq_SQ001.NAOK),1,0).Um eine Variable zu haben, die anzeigt "steht was drin oder nicht".
Klappt aber nicht.
Dann ist mir die Funktion "implode" untergekommen.
Diese macht aus einem Array einen String.
Also:
{if(implode(that.D1.sq_SQ001.NAOK)!="",1,0)}
Klappt: Da kommt 1 oder 0 raus, je nachdem , ob in der Zeile etwas steht oder nicht.
So weit, so gut; nur Du brauchst Spalten.
Das ist eigentlich dasselbe:
{if(implode(that.D1.sq_A1.NAOK)!="",1,0)} Bei mir heißt die erste Spalte "A1".
Dies wird von LS aufgelöst zu:
if(implode(D1_Zeile1_A1.NAOK, D1_Zeile2_A1.NAOK, D1_Zeile3_A1.NAOK, D1_Zeile4_A1.NAOK, D1_Zeile5_A1.NAOK) != "", 1, 0)
Damit erhälst Du eine Variable, die anzeigt, ob in der Spalte etwas steht.
Und angehängt das Beispiel:
Bis dann
Joffm
ja, da hast Du Recht.
Aber im Grunde ist es zwar umständlich, aber nicht besonders.
Im Programm, das wir professionell nutzen, kommt dies auch häufig vor.
Das machen wir dann in EXCEL mit einer Formel, die dann alle Bedingungen erstellt.
Dann muss man sie nur in LS einkopieren.
Das macht dann weniger Schreibarbeit.
Da dies bei Deinen 41 Kräutern natürlich sehr lang wird, habe ich auch schon darüber nachgedacht, eine dazwischengeschobene Gleichung zu nutzen.
Ich bin inzwischen einen Schritt weiter:
Das "sq" in {sum(that.q4.sq_C.NAOK)} ist nämlich nicht einfach die Bezeichnung der Subquestion, also "sq_C", sondern es ist Bestandteil der Funktion.
Darauf muss man erst einmal kommen.
Ich kann also in einer Matrix (Zahlen) die Zeilensumme ausrechen durch: "sum(that.D1.sq_SQ001.NAOK)"
Und um zu gucken, ob in einer Zeile irgendetwas steht, habe ich mal versucht:
if(!is_empty(that.D1.sq_SQ001.NAOK),1,0).Um eine Variable zu haben, die anzeigt "steht was drin oder nicht".
Klappt aber nicht.
Dann ist mir die Funktion "implode" untergekommen.
Diese macht aus einem Array einen String.
Also:
{if(implode(that.D1.sq_SQ001.NAOK)!="",1,0)}
Klappt: Da kommt 1 oder 0 raus, je nachdem , ob in der Zeile etwas steht oder nicht.
So weit, so gut; nur Du brauchst Spalten.
Das ist eigentlich dasselbe:
{if(implode(that.D1.sq_A1.NAOK)!="",1,0)} Bei mir heißt die erste Spalte "A1".
Dies wird von LS aufgelöst zu:
if(implode(D1_Zeile1_A1.NAOK, D1_Zeile2_A1.NAOK, D1_Zeile3_A1.NAOK, D1_Zeile4_A1.NAOK, D1_Zeile5_A1.NAOK) != "", 1, 0)
Damit erhälst Du eine Variable, die anzeigt, ob in der Spalte etwas steht.
Und angehängt das Beispiel:
Bis dann
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Attachments:
Last edit: 7 years 5 months ago by Joffm. Reason: datei angehängt
The topic has been locked.
- Joffm
- Away
- LimeSurvey Community Team
Less
More
- Posts: 12982
- Thank you received: 3993
7 years 5 months ago #144219
by Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Replied by Joffm on topic Matrix filter aus Fragentyp Matrix
Hallo, Wrankmore,
und es geht noch einfacher:
Teilfragen-Relevanz:
count(that.D1.sq_A1) >= 1, usw.
Mit Beispiel.
Im vorigen Beispiel steht übrigens noch ein blödsinniger Matrix-Filter in D2 und eine alte Relevanzgleichung - auch in D2. Müssen beide weg.
Der ganze vorige Text ist also ein bisschen als "Grundlagenforschung" anzusehen.
Viele Grüße
Joffm
und es geht noch einfacher:
Teilfragen-Relevanz:
count(that.D1.sq_A1) >= 1, usw.
Mit Beispiel.
Im vorigen Beispiel steht übrigens noch ein blödsinniger Matrix-Filter in D2 und eine alte Relevanzgleichung - auch in D2. Müssen beide weg.
Der ganze vorige Text ist also ein bisschen als "Grundlagenforschung" anzusehen.
Viele Grüße
Joffm
Volunteers are not paid.
Not because they are worthless, but because they are priceless
Attachments:
The topic has been locked.
Moderators: Joffm