Hola a todos,
Estoy intentando tabular varios casos en función de un valor de columna específico en un bucle 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);
);
El problema es que el elemento actual contiene los valores de la columna Categorizar.
Si solo especifico el valor del elemento, digamos "a" como uno de los valores de columna.
Agregué Columna de página( :Categorizar( "a" ) ) al método Tabulate, luego funciona.
Pero necesitaba ejecutar todos los valores desde el bucle for, intenté hacerlo Page Column( :Categorize(currentItem ) ), pero no funcionó y solo me dio el valor completo a la vez en lugar de dividirlo por currentItem.
Probé Page Column( :Categorize(currentItem) ) y Page Column( :Categorize(char(currentItem) )), pero ninguna funcionó. Probablemente haya una solución muy sencilla, pero no la encontré.
¿Alguien puede ayudar?
gracias de antemano
Editar (jthi): Se agregó formato jsl
Es posible que tengas que evaluar los valores; a continuación se muestra un ejemplo que utiliza la tabla de muestra de 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);
);

Si el diseño está bien, By también podría ser una opción
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"))
);

¡Gracias a que usar By también elimina el bucle for innecesario!