Ciao a tutti,
Sto cercando di tabulare più casi in base a un valore di colonna specifico nel ciclo for.
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);
);
Il problema è che currentItem contiene i columnValues della colonna Categorize.
Se specifico solo il valore dell'elemento, diciamo "a" come uno dei columnValues.
Ho aggiunto Colonna pagina( :Categorizza( "a" ) ) al metodo Tabulate, quindi funziona.
Ma avevo bisogno di eseguire tutti i valori dal ciclo for, ho provato a renderlo Page Column( :Categorize( currentItem ) ), ma non ha funzionato e mi ha dato solo l'intero valore in una volta invece di dividerlo per currentItem.
Ho provato Page Column( :Categorize( currentItem ) ), Page Column( :Categorize( char(currentItem) ) ), ma nessuno dei due ha funzionato. Probabilmente esiste una soluzione molto semplice, ma non sono riuscito a trovarla.
Qualcuno può aiutare?
grazie in anticipo
Modifica (jthi): aggiunta formattazione jsl
Potrebbe essere necessario valutare i valori, di seguito è riportato un esempio che utilizza la tabella di esempio di 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);
);

Se il layout è corretto, potrebbe essere un'opzione anche By
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"))
);

Grazie, l'utilizzo di By rimuove anche il ciclo for non necessario!