Script JMP para apilar desde la columna 2-infinito desde una tabla de Excel de actualización semanalTengo una tabla de Excel que actualizo manualmente semanalmente. A continuación, abro esta tabla en JMP y apilo cada columna desde la columna 2 en adelante. Con cada actualización semanal, agrego más columnas a la tabla inicial. Recientemente tomé una clase de introducción a JMP Scripting y estoy buscando automatizar un poco este proceso en lugar de volver a apilarlo desde cero cada vez.
Así es como se ve la tabla en JMP antes de realizar la pila:

Sé cómo importar la tabla de Excel a JMP a través de un script como este:
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
Pero donde tenía una pregunta es ¿cómo cambio el script JMP para pedirle que apile las columnas 2 hasta el final?
Tengo lo siguiente al hacer una pila manual en JMP y mirar el script fuente:
Data Table( "Data" ) << Stack(
columns(
:Name( "8/23/2021" ),
:Name( "08/30/2021" ),
:Name( "09/06/2021" ),
:Name( "09/13/2021" ),
:Name( "09/20/2021" ) // etc.
),
Source Label Column( "Failure Group Name" ),
Stacked Data Column( "% Share, Week of" )
);
y tengo el marco de una función For( que puedo usar:
For( c = 2, i <= N Col(), c++,
//body//pero no se muy bien como juntarlos. ¿Está poniendo el comando Stack( dentro del comando For( de alguna manera?
¡Gracias a cualquiera que pueda ayudar!
Tabla de datossecuencias de comandosRe: Script JMP para apilar desde la columna 2-infinito de una tabla de Excel que se actualiza semanalmenteCreo que con la plataforma Stack solo puedes usar la lista de columnas en el argumento column()
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
cols_to_stack = {"NPN1", "PNP1", "PNP2"};
dt_stacked = dt << Stack(
columns(cols_to_stack),
Source Label Column("Label"),
Stacked Data Column("Data"),
Drop All Other Columns(1)
);Así que obtenga una lista de los nombres de columna que tiene de la tabla de datos que crea desde el archivo de Excel usando << Obtener nombres de columna (Cadena), luego suelte la primera columna con Eliminar de ()
Names Default To Here(1);
dt = Open(
"$SAMPLE_IMPORT_DATA/Team Results.xlsx",
Worksheets("Ungrouped Team Results"),
Worksheet Settings(Headers Start on Row(3), Data Starts on Row(4))
);
//all columns
col_names = dt << Get Column Names("String");
//drop first column
Remove From(col_names, 1);
//stack with remaining, won't work exactly like this with this example data, as data types aren't same
//dt_stacked = dt << Stack(...)Consulte Ayuda/Índice de secuencias de comandos y busque las diferentes funciones utilizadas aquí.
Re: Script JMP para apilar desde la columna 2-infinito de una tabla de Excel que se actualiza semanalmenteAquí hay una manera de manejar esto.Por cierto, su tabla de datos de ejemplo no se pudo abrir, así que agregué una propia.
names default to here(1);
dt=data table("Example");
colNames = dt << get column names();
remove from(colNames, 1, 2 );
dt << Stack(
columns( colNames
),
Source Label Column( "Failure Group Name" ),
Stacked Data Column( "% Share, Week of" )
);