Hola,
Tengo el siguiente problema:
a) Estoy generando una tabla (llámela tabla dt) con múltiples columnas. Sin embargo, estoy interesado en mirar solo un patrón específico (por ejemplo, "ABC @ XYZ") en los nombres de las columnas junto con otras dos columnas (por ejemplo, "LCOL", "WCOL"). Estoy generando esa tabla. (Llamando a esa tabla dtB)
próximo
b) Utilizo la tabla dtB, extrae su columna y uso un bucle for para generar una tabla de resumen para cada columna que coincida con el patrón en Nombre de columna.
c) He creado una tabla vacía dt_sum_all
d) Ahora mi objetivo es obtener todos los valores de resumen de las columnas que coinciden con el patrón en una tabla junto con la columna LCOL y WCOL. (Obtengo N tablas para N tales columnas, si no uso la nueva tabla, pero eso no es lo que quiero - Quiero 1 mesa )
mi ) También al final, una vez que tengo una sola tabla, quiero cambiar el nombre de las columnas (generalmente agrega SUM al comienzo de cada columna), como SUM ( ABC @ XYZ_1AS ) a ABC @ XYZ_1AS . Como tengo muchas columnas, quiero hacerlo en un bucle o similar.
Lo que tengo hasta ahora es lo siguiente:
dt = currentdatatable();
Wait(1);
colsd = dt << get column names( string );
pattern = "ABC@XYZ";
nd = N Items( colsd );
selCols = {"LCOL", "WCOL"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dtB = dt << Subset(
All rows,
Columns(selCols)
);
colNameList= dtB << get column names( string );
Wait(1);
dt_sum_all = New Table();
For( i = 1, i <= N Items( colNameList ), i++,
If( Contains( colNameList[i], pattern),
dt_sum = dtB << Summary(
Group( :LCOL, :WCOL ),
Sum(colNameList[i]),
Freq( "None" ),
Weight( "None" )
) << show window(0);
);
Data Table (dt_sum_all) << Update (
With(Data Table(dt_sum)),
//Match Columns(:LCOL = :LCOL, :WCOL=:WCOL)
);
////column(dt_sum, "SUM("||colNameList[i] || ")" ) << set name(colNameList[i]);
);
El código anterior no funciona y no obtengo una tabla. Alguien puede ayudarme porfavor.
Si estoy leyendo su código correctamente, lo que quiere terminar es una tabla de datos de resumen de datos para un conjunto de columnas que coinciden con un patrón en la tabla de datos original.
Creo que estabas trabajando mucho más duro de lo necesario. A continuación se muestra un script de ejemplo, que utiliza la mayor parte de su código, pero que trabaja en la tabla de datos de muestra de capacidad de semiconductores, donde los nombres de las columnas de lote y oblea son lot_id y wafer, en lugar de su Lcol y Wcol. Eliminé la tabla de datos dtB porque, a menos que la necesite para algo más adelante en el script, ciertamente no es necesario crearla para luego ir y crear datos de resumen para ella. Los datos resumidos pueden provenir directamente de la tabla de datos original. Además, no es necesario resumir cada columna de una en una. Todas las columnas se pueden resumir fácilmente a la vez. Por lo tanto, no es necesario ejecutar Updatie. Finalmente, hay una opción en la Plataforma de resumen, que permitirá que los nombres de las columnas reciban el mismo nombre que el nombre de la columna de entrada, por lo que no es necesario cambiar el nombre de las columnas en la tabla de resumen.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Wait( 0 );
colsd = dt << get column names( string );
pattern = "PNP";
nd = N Items( colsd );
selCols = {"lot_id", "wafer"};
For( i = 1, i <= nd, i++,
If( Contains( colsd[i], pattern ),
Insert Into( selCols, colsd[i] )
)
);
dt_sum = dt << Summary(
Group( :lot_id, :wafer ),
Sum( colNameList[Index( 3, N Items( colNameList ) )] ),
Freq( "None" ),
Weight( "None" ),
link to original data table( 0 ),
statistics column name format( "column" )
);