<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos
Necesito ayuda sobre cuál sería la mejor manera de agrupar varias columnas de la misma tabla.
Mi tabla tendría columnas similares a las siguientes:
Z 3, X 1, Z 2, X 3, X 4, Y 1, X 2, Y 2, Z 1
Me gustaría agrupar todas las X, Y y Z juntas y en orden numérico si es posible. Esta es una versión condensada de lo que trato, que generalmente es del orden de cientos de columnas con diferentes tamaños de grupo requeridos.
Creo que la forma más sencilla sería crear una lista basada en los nombres de columna, luego usar la función loc () para devolver la posición de cada nombre de columna similar. Sin embargo, ¿cuál sería la mejor manera de usar el comando group ()?
Cualquier ayuda en este problema es apreciada.
¡Gracias!
Funciona muy bien, gracias MS!
Una pregunta de seguimiento ... ¿Hay alguna forma fácil de presentar al usuario una lista de todos los grupos, hacer que seleccionen uno más de la lista y luego hacer que el script cree tablas de subconjuntos que contengan solo los grupos seleccionados?
Probablemente hay varias maneras de hacer esto. Aquí hay una idea que debería funcionar para cualquier tabla donde la agrupación debe basarse en la primera letra de los nombres de las columnas.
// tabla de ejemplo
nombres = { Z 3 , X 1 , Z 2 , X 3 , X 4 , Y 1 , X 2 , Y 2 , Z 1 } ;
dt = Nueva mesa ( "prueba" ) ;
por ( yo = 1 , yo <= N artículos ( nombres ) , yo ++,
dt << Nueva Columna ( Carbonizarse ( nombres El yo ] ) , numérico )
) ;
// ordenar las columnas de la tabla y hacer una lista de la primera letra de los nombres de las columnas
dt << reordenar por nombre () ;
colista = dt << obtener nombres de columna ( cuerda ) ;
por ( yo = 1 , yo <= N Col ( dt ) , yo ++,
colista El yo ] = Izquierda ( colista El yo ] , 1 )
) ;
// Hacer lista de nombre de columna única 1ª letra
col_type = Matriz asociativa ( colista ) << conseguir llaves ;
// Columnas de grupo
por ( yo = 1 , yo <= N artículos ( col_type ) , yo ++,
pos = Loc ( colista , col_type El yo ] ) ;
dt << columnas de grupo ( Columna ( pos El 1 ] ) , N fila ( pos ) ) ;
) ;