Concaténer une liste de tables et ajouter une "colonne source"J'ai une liste de tables ouvertes (noms) que je veux concaténer et ajouter une nouvelle "colonne source" qui peut être récupérée à partir de la même liste de noms de table. J'ai essayé toutes les "solutions" précédentes : publiées sur ce forum de discussion sans succès (seulement une chance partielle)
Je peux obtenir mes tables concaténées en suivant une solution publiée par TXNelson, mais je n'arrive pas à faire fonctionner la «colonne source».J'apprécierai toute aide pour résoudre celui-ci.
tables = {"R1", "R2", "R3"};
TablesN ={};
For(k = 1, k <= n Rows ( Data Table(tables[i] )),k++,
Insert Into(TablesN, Data Table (tables [i] ) << get name));<BR />
// the concatenation works like a charm
Data Table = New Table ("RST");
For( i = 1, i <= N Items( tables ), i++,
Data Table( "RST" ) << Concatenate(
Data Table( tables[i] ),
append to first table(1)
);
//Close( Data Table( tables[i] ), No Save );
);
// this part fails<BR />
data table( "RST" ) << add multiple columns("Source Table", 1, before first, character );
:Source Table << set values( TablesN );Modélisation statistique avancéeAccès aux donnéesFusion et nettoyage des donnéesPersonnalisation de masseIngénierie de la qualité et des procédésPartage et communication des résultatsRe : Concaténer une liste de tables et ajouter une "colonne source"@SP - Oui, j'avais les "noms" pas les objets. Merci beaucoup d'avoir pris le temps de m'aider.
Cordialement,
AlfredoRe : Concaténer une liste de tables et ajouter une "colonne source"La liste les tables doit contenir des objets de table de données (la première partie de mon code illustre une façon de créer une telle liste) et toutes les tables doivent toujours être ouvertes lorsque le code est exécuté. Sinon, vous obtiendrez la fenêtre pop-ip.
Une fois le code exécuté, vous pouvez fermer toutes les tables de données (enregistrées) de la liste en une seule étape avec tableaux << fermer la fenêtre;.
Re : Concaténer une liste de tables et ajouter une "colonne source"Salut MS,
J'ai testé ton code :
dt = New Table( "RST" );
dt << concatenate( tables, append to first table( 1 ), create source column( 1 ) );
et cela crée une fenêtre contextuelle qui me permettrait de sélectionner les tables à concaténer, ce qui va à l'encontre de l'objectif de créer un script pour automatiser le processus.Il ne parcourt pas la liste des "tables".J'utilise JMP 15.
Juste pour info, c'est le post que j'ai utilisé pour me guider. Merci.
https://community.jmp.com/t5/Discussions/JSL-bug-Concatenate-all-opened-table-into-1-table-and-close-all/mp/275804
Re : Concaténer une liste de tables et ajouter une "colonne source"La dernière partie devrait fonctionner si la liste contient des valeurs. Découvrez la première boucle for ; il utilise k comme itérateur mais à l'intérieur de la boucle je, non défini, est utilisé comme index de liste.
Une colonne source peut également être créée automatiquement avec Concatenate() comme dans l'exemple ci-dessous .
// Create a list of data tables
names = {"R1", "R2", "R3"};
tables = {};
For( i = 1, i <= N Items( names ), i++,
Insert Into( tables, Data Table( names[i] ) )
);
// Concat all and create a source column in one step
dt = New Table( "RST" );
dt << concatenate( tables, append to first table( 1 ), create source column( 1 ) );