Noto que el Filtro de datos locales para variables categóricas las muestra en orden alfabético.
Hay una opción para ordenarlos por recuento, pero buscaba la opción de ordenarlos por otras variables.
En mi caso, tengo una lista específica que quiero usar como orden, pero no estoy seguro de cómo hacerlo.
¿Existe una forma más sencilla que la siguiente?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Selection Filter",
Data Filter Context Box(
H List Box(
dfsb = Data Filter Source Box(
Graph Builder(
Size( 419, 533 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables( Y( :name, Order By( :age, Ascending, Order Statistic( "Mean" ) ) ) ),
Elements( Bar( Y, Legend( 3 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
OutlineBox,
{Set Title( "Filter" ), Image Export Display( Normal )}
)
)
);
),
Platform(
Current Data Table(),
Bubble Plot( X( :weight ), Y( :height ), Sizes( :age ), Title Position( 0, 0 ) )
)
)
)
);
Aquí hay una secuencia de comandos que usa el Filtro de datos locales predeterminado, junto con la propiedad de la columna Orden de valor para lograr lo que está creando.El script incluye 2 métodos para establecer el orden.

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// If the sorting of the default data table is not an issue this simple code will set
// the order of the name column to the order found in the data table
/*dt << sort( by( :age ), order( Ascending ), replace table( 1 ) );
dt:name << set property( "value order", {Common Order( 0 ), Row Order Levels( 1 )} );*/
// The code below creates a subset of the default data when it sorts, and then sets the
// Value Order column property to the order found in the sorted data
dtSort = dt << sort( private, by( :age ), order( Ascending ) );
sortList = dtSort:Name << get values;
Close( dtSort, Nosave );
Eval(
Substitute(
Expr(
dt:name << set property(
"value order",
{Custom Order( __sList__ ), Common Order( 0 ), Numerical Order( 0 )}
)
),
Expr( __sList__ ), sortList
)
);
Bubble Plot(
X( :weight ),
Y( :height ),
Sizes( :age ),
Title Position( 0, 0 ),
Local Data Filter(
Add Filter(
columns( :name ),
Display( :name, N Items( 15 ), Find( Set Text( "" ) ) )
)
),
SendToReport(
Dispatch(
{},
"weight",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 60 ), Max( 180 ), Inc( 20 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"height",
ScaleBox,
{Format( "Fixed Dec", 12, 0 ), Min( 50 ), Max( 72.5 ), Inc( 5 ),
Minor Ticks( 1 )}
)
)
);