Appliquer un script à plusieurs tables de donnéesJ'ai un script dans lequel j'ouvre un fichier txt dans JMP en tant que table de données, puis je déplace les noms de colonnes répertoriés dans la ligne 7 vers les en-têtes de colonnes. Comment puis-je appliquer cela à plusieurs tables de données ? Mon script actuel ne fonctionne pas. J'ai JMP16. Merci.
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 )
)
)
); Automatisation et scriptsRe : Appliquer un script à plusieurs tables de donnéesVoici comment je le configurerais
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 : Appliquer un script à plusieurs tables de donnéesMerci pour votre réponse! J'ai essayé votre script, mais il exécute uniquement la fonction table_script sur la dernière table de données ouverte. Avez-vous une idée de ce qui pourrait être le problème ? Merci.
Re : Appliquer un script à plusieurs tables de donnéesJ'ai reproduit la conclusion que vous avez indiquée et je n'ai pas pu corriger le problème en utilisant l'approche que j'adoptais.Je suis donc revenu à votre code d'origine, j'ai simplifié l'approche et j'ai réussi à exécuter un exemple complet.
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 : Appliquer un script à plusieurs tables de donnéesMerci beaucoup! Votre nouveau script a permis d'apporter des modifications à toutes les tables de données ouvertes. Cependant, j'ai constaté que mon script ne fonctionnait pas comme prévu et attachait un « 7 » à tous les en-têtes de colonnes au lieu de déplacer la ligne 7 vers les en-têtes de colonnes. Auparavant, cela fonctionnait sur une seule table de données, mais dans ce cas, je devais modifier mon code pour lire réellement la valeur de la table à l'emplacement spécifié. Voici mon code de travail :
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;
);