Hallo zusammen,
Ich versuche, mehrere Fälle basierend auf einem bestimmten Spaltenwert in einer For-Schleife zu tabellieren.
categorizes = Column(dt, "Categorize");
columnValues = Associative Array(categorizes << Get Values) << Get Keys;
For(i = 1, i <= N Items(columnValues), i++,
currentItem = columnValues[i];
obLoopY = Outline Box("categorize" || Char(currentItem),
dt << Tabulate(
Page Column(:Categorize(Char(currentItem))),
Show Control Panel(0),
Add Table(
Column Table(
Grouping Columns(:Underlayer, :RefEntity),
Analysis Columns(:M3S_Y)
),
Row Table(Grouping Columns(:TargetEntity))
),
SendToReport(Dispatch({}, "", TextBox, {Set Base Font("Heading")}))
)
);
boxY << append(obLoopY);
);
Das Problem besteht darin, dass das aktuelle Element die Spaltenwerte aus der Spalte „Kategorisieren“ enthält.
Wenn ich nur den Elementwert angebe, sagen wir „a“ als einen der Spaltenwerte.
Ich habe Seitenspalte( :Kategorisieren( "a" ) ) zur Tabulate-Methode hinzugefügt, dann funktioniert es.
Ich musste jedoch alle Werte aus der For-Schleife ausführen und habe versucht, daraus eine Seitenspalte (:Kategorisieren(aktuellesElement)) zu machen, aber das hat nicht funktioniert und mir einfach den gesamten Wert auf einmal zurückgegeben, anstatt ihn nach aktuellem Element aufzuteilen.
Ich habe Page Column( :Categorize( currentItem ) ) und Page Column( :Categorize( char(currentItem) ) ) ausprobiert, aber keines von beiden hat funktioniert. Wahrscheinlich gibt es eine sehr einfache Lösung, aber ich konnte sie nicht finden.
Kann jemand helfen?
Dank im Voraus
Bearbeiten (jthi): JSL-Formatierung hinzugefügt
Möglicherweise müssen Sie die Werte auswerten. Unten sehen Sie ein Beispiel mit der Beispieltabelle von JMP.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, groups = By(:sex));
New Window("test",
collector = H List Box()
);
For Each({group}, groups,
ob = Outline Box("Categorize " || group,
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Analysis Columns(:height, :weight), Statistics(Mean)),
Row Table(Grouping Columns(:age))
)
);
Eval(EvalExpr(
tab << page column(:sex(Expr(group)));
));
);
collector << Append(ob);
);

Wenn das Layout passt, wäre auch By eine Option.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
tab = dt << Tabulate(
Show Control Panel(0),
Add Table(
Column Table(Analysis Columns(:height, :weight), Statistics(Mean)),
Row Table(Grouping Columns(:age))
),
By(:sex),
Group Options(Layout("Horizontal List"))
);

Dank der Verwendung von „By“ werden auch unnötige For-Schleifen entfernt!