DIVIDIR de alto a ancho: ¿cómo agrupar dinámicamente las columnas resultantes?Tengo un dt grande que estoy dividiendo de ALTO a ANCHO. Esto da como resultado una enorme cantidad de columnas, todas con el formato de encabezado = "Paso#_Parámetro_Función".
La cantidad de estas columnas varía y nunca son predecibles ni fijas, como tampoco lo son los números o nombres de los pasos.
¿Cómo podría agrupar estas columnas por número de paso? ¿Algún tipo de bucle para recorrer la larga lista de columnas, seleccionar el primer número de paso y luego asignarlo a un grupo etiquetado como "Número de paso"?
<< Split(
Split By( :recipe_step_id, :parameter_name, :aggregate_function ),
Split( :value ),
Group( :recipe, :equipment_id, :chamber_id, :wafer_scribe, :wafer_process_start_time ),
Output Table( "Wide" ),
Remaining Columns( Drop All ),
Sort by Column Property
);

Combinación y limpieza de datosPersonalización masivaRe: SPLIT de alto a ancho: ¿cómo agrupar las columnas resultantes dinámicamente?Aquí hay una secuencia de comandos simple que crea un nuevo grupo de columnas que comienzan con los caracteres "NPN".

names default to here(1);
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colNamesList = dt << get column names(string, continuous);
NPNList = {};
for(i=1,i<=nitems(colNamesList),i++,
If(contains(colNamesList[i],"NPN")==1,
insert into(NpNList,colNamesList[i])
)
);
dt << group columns("NPNGroup", NPNList);
Re: DIVIDIR de alto a ancho: ¿cómo agrupar las columnas resultantes dinámicamente?- Tómese el tiempo de leer la Guía de programación de scripts que se encuentra en la Biblioteca de documentación de JMP, en el menú desplegable Ayuda. Allí encontrará las estructuras de lenguaje que puede usar para resolver problemas como el que acaba de consultar.
- A continuación se muestra un ejemplo sencillo de secuencia de comandos que crea grupos de columnas que encuentra. Tenga en cuenta que, intencionalmente, no hay columnas que comiencen con XYZ, aunque la secuencia de comandos lo busque.
Names Default To Here( 1 );
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
colNameList = dt << get column names( string );
NPNList = {};
PNPList = {};
XYZList = {};
// Find matching column names
For( i = 1, i <= N Items( colNameList ), i++,
If(
Left( colNameList[i], 3 ) == "NPN",
Insert Into( NPNList, colNameList[i] ),
Left( colNameList[i], 3 ) == "PNP",
Insert Into( PNPList, colNameList[i] ),
Left( colNameList[i], 3 ) == "XYZ",
Insert Into( XYZList, colNameList[i] )
)
);
// If groups of columns are found, creat JMP groupings
If( N Items( NPNList ) > 0,
dt << select columns( NPNList );
dt << group columns();
);
If( N Items( PNPList ) > 0,
dt << select columns( PNPList );
dt << group columns();
);
If( N Items( XYZList ) > 0,
dt << select columns( XYZList );
dt << group columns();
);Re: DIVIDIR de alto a ancho: ¿cómo agrupar las columnas resultantes dinámicamente?Increíble. Una última pregunta: ¿Es posible introducir una lista de grupos de cadenas de caracteres para que los recorra, buscando las columnas que coinciden y colocándolas en sus respectivos grupos?
como una lista de:
columnas que comienzan con "AAA", "BBB", "CCC", etc.
y luego colóquelos en grupos etiquetados AAA, BBB, CCC
?
¿Cómo omitir un error si no hay columnas que coincidan con BBB?