Tengo una tabla de Excel que actualizo manualmente semanalmente. A continuación, la abro en JMP y apilo todas las columnas a partir de la segunda. Con cada actualización semanal, añado más columnas a la tabla inicial. Recientemente tomé un curso de Introducción a la Creación de Scripts en JMP y quiero automatizar un poco este proceso en lugar de tener que 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 el siguiente:
Open(
"Drive:\Folder\File.xlsx",
Worksheets( "Data" ), // etc.
Pero donde tengo una pregunta es ¿cómo cambio el script JMP para solicitarle que apile las columnas 2 hasta el final?
Obtuve lo siguiente al realizar un Stack 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( puedo usar:
For( c = 2, i <= N Col(), c++,
//body//Pero no sé muy bien cómo combinarlos. ¿Se trata de poner el comando Stack( dentro del comando For( de alguna manera?
¡Gracias a cualquiera que pueda ayudar!
Creo 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í.