Aplicar script a múltiples tablas de datosTengo una secuencia de comandos en la que abro un archivo de texto en JMP como una tabla de datos y luego muevo los nombres de las columnas que figuran en la fila 7 a los encabezados de las columnas. ¿Cómo puedo aplicar esto a varias tablas de datos? Mi script actual no funciona. Tengo JMP16. Gracias.
dt_list = Multiple File Import(); //additional known text here to open files
table_script = expr(
//Move the column names listed in row 7 to the column headers
dt = Current Data Table();
dt << clear select;
dt << Clear Column Selection();
lastcol = N Col( dt );
header = 7;
For( i = 1, i <= lastcol, i++,
Column( i ) << set Name( Column(i)[header] )
);
);
Eval(
Eval Expr(
For Each( {value, index},
Expr( dt_list[index] << table_script )
)
)
); Automatización y secuencias de comandosRe: Aplicar script a varias tablas de datosAsí es como lo configuraría
Names Default To Here( 1 );
dt_list = Multiple File Import();
table_script = Function( {dt},
{defaultlocal},
//Move the column names listed in row 7 to the column headers
dt << clear select;
dt << Clear Column Selection();
lastcol = N Col( dt );
header = 7;
For( i = 1, i <= lastcol, i++,
Column( i ) << set Name( Column( i )[header] )
);
);
For Each( {value}, dt_list, table_script( value ) );Re: Aplicar script a varias tablas de datos¡Gracias por su respuesta! Probé su script, pero solo ejecuta la función table_script en la última tabla de datos que se abrió. ¿Tienes alguna idea de cuál podría ser el problema? Gracias.
Re: Aplicar script a varias tablas de datosRepliqué el hallazgo que usted indicó y no pude corregir el problema utilizando el enfoque que estaba adoptando.Así que volví a su código original, simplifiqué el enfoque y logré ejecutar un ejemplo completo.
Names Default To Here( 1 );
rc = Create Directory( "$TEMP/sub1" );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
Close( dt, save( "$TEMP/sub1/MFI big class.jmp" ) );
dt = Open( "$SAMPLE_DATA/body fat.jmp" );
Close( dt, save( "$TEMP/sub1/MFI body fat.jmp" ) );
dt = Open( "$SAMPLE_DATA/candy bars.jmp" );
Close( dt, save( "$TEMP/sub1/MFI candy bars.jmp" ) );
Show( Files In Directory( "$TEMP/sub1" ) );
dt_list = Multiple File Import(
<<SET folder=""></SET>
Re: Aplicar script a varias tablas de datos¡Muchas gracias! Su nuevo script funcionó para realizar ediciones en todas las tablas de datos que se abrieron. Sin embargo, descubrí que mi secuencia de comandos no funcionaba según lo previsto y adjuntaba un "7" a todos los encabezados de columna en lugar de mover la fila 7 para que fuera los encabezados de columna. Anteriormente funcionaba en una sola tabla de datos, pero en este caso, necesitaba cambiar mi código para leer realmente el valor de la tabla en la ubicación especificada. Aquí está mi código de trabajo:
Names Default To Here( 1 );
dt_list = Multiple File Import();
table_script = Expr(
//Move the column names listed in row 7 to the column headers
dt = Current Data Table();
dt << clear select;
dt << Clear Column Selection();
lastcol = N Col( dt );
header = 7;
For( i = 1, i <= lastcol, i++,
tableVal = Column( Current Data Table(), i)[ header ];
Column( i ) << set Name( tableVal )
);
);
For Each( {table}, dt_list,
Current Data Table( table );
table_script;
);