Comment trier les tables ouvertes par nom de table<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ouvre plusieurs tables à la fois. Une fois ouvert, je parcourt toutes les tables ouvertes de 1 à N Table () et stocke les références de chaque table dans une liste. Cependant, lorsque je passe en revue chaque table ouverte, je ne suis pas sûre de la manière dont elle est organisée dans la mémoire. En bout de ligne, je veux que les entrées de ma liste soient triées en fonction du nom de la table. Est-il possible pour moi de trier les tables ouvertes avant de les stocker dans une liste? Ou, pour le dire sous un angle différent, quel est le meilleur moyen de trier les références de table dans ma liste (si elles sont stockées dans ma liste dans un ordre aléatoire)?
Re: Comment trier les tables ouvertes par nom de tableNe triez pas les tables après leur ouverture!
Triez les noms de table avant de les ouvrir. Vous pouvez obtenir les noms de table sous forme de liste, puis travailler avec eux. Une fois la liste triée, ouvrez-les séquentiellement et traitez-les.
Dans ce script: https://community.jmp.com/t5/JMP-Scripts/Combine-multiple-txt-or-csv-files/ta-p/24083
Je reçois une liste de tous les types de fichiers d'un répertoire, puis les ouvre de manière séquentielle. Cela fonctionne très bien lorsque les fichiers individuels sont volumineux ou lorsqu'il existe des milliers de fichiers.
Re: Comment trier les tables ouvertes par nom de tablePour ce faire, vous utiliseriez la propriété value ordering d'une colonne. Voici un exemple:
sort_order_list = {"XXX", "AAA", "DDD", "GGG", "YYY", "QQQ"};
dt = New Table( "Untitled 15", Add Rows( 6 ),
New Column( "To Be Sorted", Character, "Nominal",
Set Values( {"AAA", "DDD", "GGG", "QQQ", "XXX", "YYY"} )
)
);
column(dt, "To Be Sorted") << set property("Value Ordering", sort_order_list);
Maintenant, quand vous triez la colonne À trier il sera trié selon l'ordre des éléments de la liste.
Re: Comment trier les tables ouvertes par nom de tableJe ne suis pas sûr de comprendre ce que vous demandez, malheureusement.
Supposons que ma liste de valeurs de chaîne de caractères, myList = {"alpha", "gamma", "beta"} et une table, "Ma table", avec une colonne appelée "Vals" contenant l'une de ces trois valeurs dans chaque cellule. .
Voulez-vous trier "Ma table" afin que toutes les lignes avec "alpha" viennent en premier, toutes les lignes avec "bêta" viennent en dernier et toutes les lignes avec "gamma" entre les deux?
Re: Comment trier les tables ouvertes par nom de tableComment puis-je trier la table par valeurs dans une liste au lieu de croissant ou décroissant?
supposons que j'ai des valeurs de colonne uniques dans une liste. et l'ordre des valeurs dans la liste est niether ascendant ni descendant. Comment puis-je utiliser cette liste pour trier la table?
Merci d'avance.
RAM
Re: Comment trier les tables ouvertes par nom de tableMerci. J'aurais dû y penser avant. J'avais déjà essayé de trier la liste mais en ne contenant que les noms de table.
Re: Comment trier les tables ouvertes par nom de tableVoici une alternative si une liste de références à la table de données, plutôt que des chaînes, est nécessaire:
openTables = {};
For(i = 1, i <= N Table(), i++,
Insert Into(openTables, Data Table(i))
);
Sort List Into(openTables);
// Refer directly to table, e.g.
openTables[1] << Bring Window to Front;
Re: Comment trier les tables ouvertes par nom de tableDésolé, j'ai négligé la "Liste de tri en" (")" plutôt chouette. Il est clair que je dois réapprendre avec «Aide> Index de script».
Alors, oui, vous pouvez faire:
// Build the sorted list
openTables = {};
for(t=1, t<=NTable(), t++, InsertInto(openTables, DataTable(t) << getName));
SortListInto(openTables);
// Manipulate (Close) each table in this list
for(t=1, t<=NItems(openTables), t++, Close(DataTable(openTables[t]), NoSave); Wait(1));
Re: Comment trier les tables ouvertes par nom de table@ Ian, une fois les noms de table triés et stockés dans la liste openTables, comment puis-je référencer la table? Par exemple, est-il possible de faire ceci:
Pour (a = 1, a <= N Table (), a ++,
tmpDT = table de données (openTables )
// ....
)
Séparément, cela ferait-il la même chose pour trier le contenu de la liste?
Trier la liste en (openTables);
Cordialement,
Chris
csoon1 wrote:I am opening multiple tables at once. Once opened, I loop through all open tables from 1 to N Table() and store the references to each table on a list. However as I loop through each open table, I am not sure how it is arranged in the memory. Bottom line, I want the entries on my list to be sorted according to the table name. Is there a way for me to sort the open tables before storing them to a list? Or to put it in a different angle, what's the best way to sort the table references inside my list (if assuming they are stored on my list at a random order)?
Re: Comment trier les tables ouvertes par nom de tableVoici un moyen:
openTables = {};
for(t=1, t<=NTable(), t++, InsertInto(openTables, DataTable(t) << getName));
dt = NewTable("Invisible", NewColumn("Table Name", Character, Values(openTables)), Invisible);
dt << Sort(By("Table Name"), Ascending, ReplaceTable);
openTables = Column(dt, "Table Name") << getValues;
Close(dt, NoSave);