¿Cómo puedo escribir un script para agrupar columnas automáticamente en una nueva tabla?Hola,
Actualmente estoy escribiendo un script para unir esencialmente tres tablas de "referencia" usando las funciones Unir, Transponer y Actualizar. Mi script permite que la tabla de salida final se actualice cada vez que agrego filas a la primera tabla de "referencia".
Me preguntaba si sería posible editar mi script para agrupar columnas automáticamente (es decir, la función "Agrupar columnas") en la tabla de salida final según el valor en una columna de la primera tabla de "referencia". Esta columna no se incluye en ninguna de las funciones de la tabla, ya que causaría problemas con la transposición. Es importante que estas agrupaciones permanezcan para cada actualización de la tabla final.
Agradezco cualquier comentario que pueda tener.
-Brian D.
Re: ¿Cómo puedo escribir un script para agrupar columnas automáticamente en una nueva tabla?¿Es este el tipo de cosas que estás buscando?
Names Default To Here( 1 );
dt1 = New Table( "table1", add rows(1), New Column( "test", set values( [1] ) ) );
dt2 = New Table( "table2", add rows(2),
new column( "x1", character, set values( {"a", "b"} ) ),
New Column( "x2", character, set values( {"c", "d"} ) )
);
If( dt1:test[1] == 1,
dt2 << combine columns( delimiter( "," ),
columns( dt2:x1, dt2:x2 ), Column Name( "Combined" ) )
);Re: ¿Cómo puedo escribir un script para agrupar columnas automáticamente en una nueva tabla?No exactamente, aunque una declaración If similar podría ser útil. La tabla de referencia que mencioné (Tabla 1) tiene dos columnas relevantes, "ID" y "Tipo". La tabla de salida final (Tabla 2) tiene la columna "ID" transpuesta para que los valores debajo de esa columna en la Tabla 1 ahora sean nombres de columna en la Tabla 2. Lo que me gustaría hacer es agrupar estas columnas en la Tabla 2 en función de sus valores correspondientes en la columna "Tipo" en la Tabla 1.Re: ¿Cómo puedo escribir un script para agrupar columnas automáticamente en una nueva tabla?Eche un vistazo en el índice de secuencias de comandos para los usos de las columnas de grupo.
Aquí hay una forma de hacer lo que dijiste
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = New Table( "groupings",
New Column( "ID", character, set values( {"name", "age", "sex", "height", "weight"} ) ),
New Column( "Type", character, set values( {"A", "B", "C", "B", "A"} ) )
);
// Split data into columns based on Type
dtSplit = dt2 << Split( Split By( :Type ), Split( :ID ), Sort by Column Property );
// Process through the Split data table, creating the groups in the first data table
For( Group = 1, Group <= N Cols( dtSplit ), Group++,
theGroup = Column( dtSplit, Group ) << get values;
For(i=nitems(theGroup), i>=1,i--,if(theGroup[i] == "",
remove from(thegroup,i,1)));
grouping = dt << group columns( theGroup ); <BR /><BR /><FONT face="Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace" size="2" style="background-color: #f5f5f5;" color="#b00000">dt << Rename Column Group( grouping, (column(dtSplit, group)<<GET name="">
);</GET></FONT>