Asignación automática de columnas a gruposHe estado luchando por resolver esto. Tengo una tabla (Tabla1) que tiene columnas que quiero agrupar. La Tabla2 tiene los nombres de las columnas y las etiquetas de grupo que quiero usar. Quiero crear una secuencia de comandos y automatizar la creación de la tabla agrupada, como se muestra en la captura de pantalla a continuación. Agradecería cualquier sugerencia sobre cómo hacer esto.

Aquí hay scripts para crear la Tabla 1 y la Tabla 2 que se muestran arriba
dt1 = New Table( "Table1",
Add Rows( 3 ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [35, 10, 88] ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 3, 2] ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 3, 1] ) ),
New Column( "D", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 2, 2] ) )
);
dt2 = New Table( "Table2",
Add Rows( 4 ),
New Column( "Name", Character, "Nominal", Set Values( {"A", "B", "C", "D"} ) ),
New Column( "GroupName", Character, "Nominal", Set Values( {"G1", "G1", "G2", "G2"} ) )
);
Automatización y scriptingRe: Asignación automática de columnas a gruposUtilizo casi la misma idea que Jim, pero me gusta separar la recopilación y creación de grupos en sus propios bucles.
Names Default To Here(1);
dt1 = New Table("Table1",
Add Rows(3),
New Column("A", Numeric, "Continuous", Format("Best", 12), Set Values([35, 10, 88])),
New Column("B", Numeric, "Continuous", Format("Best", 12), Set Values([2, 3, 2])),
New Column("C", Numeric, "Continuous", Format("Best", 12), Set Values([1, 3, 1])),
New Column("D", Numeric, "Continuous", Format("Best", 12), Set Values([2, 2, 2]))
);
dt2 = New Table("Table2",
Add Rows(4),
New Column("Name", Character, "Nominal", Set Values({"A", "B", "C", "D"})),
New Column("GroupName", Character, "Nominal", Set Values({"G1", "G1", "G2", "G2"}))
);
aa_groups = Associative Array(Column(dt2, "GroupName"));
For Each({key}, aa_groups << get keys,
aa_groups[key] = dt2 << Get Rows Where(:GroupName == key);
);
For Each({{name, cols}}, aa_groups,
dt1 << Group Columns(name, cols);
);Re: Asignación automática de columnas a gruposHe aquí una forma de abordar el problema:
Names Default To Here( 1 );
dt1 = New Table( "Table1",
Add Rows( 3 ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [35, 10, 88] ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 3, 2] ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 3, 1] ) ),
New Column( "D", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 2, 2] ) )
);
dt2 = New Table( "Table2",
Add Rows( 4 ),
New Column( "Name", Character, "Nominal", Set Values( {"A", "B", "C", "D"} ) ),
New Column( "GroupName", Character, "Nominal", Set Values( {"G1", "G1", "G2", "G2"} ) )
);
GroupNames = Associative Array( dt2:GroupName ) << get keys;
For Each( {theGroup}, GroupNames,
// Create a list for a group
theRows = dt2 << get rows where( :GroupName == theGroup );
grpList = {};
For Each( {rowValue}, theRows, Insert Into( grpList, dt2:Name[rowValue] ) );
dt1 << Group Columns( theGroup, grpList );
)
;