JSL- Somme: quantité triée par rangées avec la même chaîne dans: ville<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut à tous,
Je débute dans la rédaction de scripts et je suis totalement désemparé lorsque je tente de trouver des tutoriels d’information sur JSL. J'apprécierai vraiment toute aide avec mon problème.
Fondamentalement, je dois trier par: Ville et résumer la valeur dans: Qté de chaque élément, puis l'afficher. Le problème étant que je dois rassembler de manière dynamique une liste de toutes les différentes chaînes de: City, puis additionner toutes les valeurs numériques de: Qty pour les lignes dont les chaînes correspondent dans la colonne: City.
Ainsi, par exemple, la table ressemblerait à ceci
tableEx =
| Ville | Qté |
|---|
| a1 | 100 |
| a2 | dix |
| a9 | 29 |
| a1 | 99 |
| a4 | 20 |
| a7 | 91 |
| a2 | 60 |
| a100 | 33 |
| a500 | 30 |
| a100 | 14 |
| a99 | 2000 |
| etc... | etc... |
Cette partie suivante n'a pas besoin d'être lue pour résoudre mon problème, elle détaille simplement comment je souhaite résoudre le problème dans mon esprit. J'aimerais pouvoir faire quelque chose comme ça;
List_Of_CityNames = new List ();
switch = false;
Foreach Row r dans la tableEx
{
Foreach String city dans List_Of_CityNames
{
if (r.Get (Ville) == ville)
switch = true; // signifie que l'entrée de la ligne de cette ligne est déjà sur la liste, nous n'avons donc pas besoin de l'ajouter.
}
if (switch == false) // si cette ligne: Ville n'a pas encore été ajoutée à la liste, elle est exécutée.
{
List_Of_CityNames.Add (r.Get (Ville)); // ville ajoutée à la liste
}
switch = false; // passer à la ville non trouvée sur la liste
}
Si cela fonctionnait, j'aurais fait la liste à partir de tuples et en ferais une paire chaîne + int pour me permettre de résumer la quantité de villes correspondantes dans la boucle ci-dessus. Ensuite, je l’imprimerais en créant une nouvelle table () si je le pouvais.
Après avoir rassemblé les informations ci-dessus, je devrais ensuite les imprimer. Quelqu'un saurait-il savoir comment créer un tableau basé sur la taille dynamique de la liste, qui peut ou non faire partie de la première solution?
dtSolution = New Table ("Solution",
Ajouter une ligne (/ * valeur numérique représentant le nombre de noms de ville différents * /),
Nouvelle colonne ("/ * première ville de la liste * /", "Continu", Définir les valeurs (liste (/ variable qui représente la somme: quantité pour les mêmes villes * /))),
Nouvelle colonne ("/ * deuxième ville dans la liste * /", "Continu", Valeurs définies (liste (/ variable qui représente la somme: quantité pour les mêmes villes * /))),
Nouvelle colonne ("/ * troisième ville dans la liste * /", "Continu", Valeurs définies (liste (/ variable qui représente la somme: quantité pour les mêmes villes * /))),
Nouvelle colonne ("/ * quatrième ville dans la liste * /", "Continu", Valeurs définies (liste (/ variable qui représente la somme: quantité pour les mêmes villes * /))),
Nouvelle colonne ("/ * cinquième ville de la liste * /", "Continu", Valeurs définies (liste (/ variable qui représente la somme: Qté pour les mêmes villes * /))),
Nouvelle colonne ("/ * sixième ville de la liste * /", "Continu", Valeurs définies (liste (/ variable qui représente la somme: quantité pour les mêmes villes * /))),
etc jusqu'à ce que chaque ville ait été ajoutée à la table // Après avoir créé la nouvelle table, je devrais probablement utiliser une boucle foreach pour ajouter chaque ligne une par une à la table à partir de la liste construite dans le point 1.
)
J'apprécie vraiment toute aide que je peux obtenir. Je vous remercie également si vous avez fini par lire tout cela.
Je vous remercie,
Loysius
Re: JSL- Somme: quantité triée par rangées avec la même chaîne dans: villeLoysius,
J'aurais dû mentionner que Tabulate apparaît dans le menu Tables de JMP 10. Il a été déplacé dans le menu Analyser à partir de JMP 11.
-Michael
Re: JSL- Somme: quantité triée par rangées avec la même chaîne dans: villeLe petit triangle rouge dans la fenêtre de tabulation vous permet de sauvegarder la tabulation sous forme de tableau de données.
À l'aide de la solution de Michael, après avoir créé la tabulation souhaitée, cliquez sur le triangle rouge et sélectionnez "Transformer en tableau de données". Cela imite essentiellement ce que j'ai fait dans JSL.
Re: JSL- Somme: quantité triée par rangées avec la même chaîne dans: villeMerci Michael et PMroz!
J'ai trouvé Tabulate dans le menu Tables, mais merci beaucoup pour vos commentaires. Je ne savais pas qu'il était possible de copier la version JSL des tables dans le presse-papiers et de les coller dans mon script.
Malheureusement, ils ne copient pas de telle sorte qu'ils soient directement utilisables, ils doivent encore être modifiés avant de fonctionner. Dans ce cas, la solution de PMroz montre la syntaxe pour que tout fonctionne correctement.
Cordialement,
Loysius
Re: JSL- Somme: quantité triée par rangées avec la même chaîne dans: villeVoici le programme JSL:
// Créer un exemple de table
dt = Nouvelle table ( "CityQty" , Ajouter des lignes ( 11 ) ,
Nouvelle colonne ( "Ville" , Personnage , Nominal ,
Définir des valeurs ( { "a1" , "a2" , "a9" , "a1" , "a4" , "a7" , "a2" , "a100" , "a500" , "a100" , "a99" } ) ) ,
Nouvelle colonne ( "Qté" , Numérique , Continu , Format ( "Meilleur" , 12 ) ,
Définir des valeurs ( [ 100 , dix , 29 , 99 , 20 , 91 , 60 , 33 , 30 , 14 , 2000 ] ) )
) ;
// Faire une tabulation invisible
dtab = dt << Tabuler (
Afficher le panneau de configuration ( 0 ) ,
Ajouter une table (
Table de colonne ( Colonnes d'analyse ( : Qté ) ) ,
Tableau de rangée ( Regroupement de colonnes ( : Ville ) )
) , invisible ,
) ;
// Convertit la tabulation en tableau
dt_new = dtab << Faire en table de données ;
// Supprimer la tabulation
dtab << Fermer la fenêtre ;
Re: JSL- Somme: quantité triée par rangées avec la même chaîne dans: villeSi vous avez les colonnes City et Qty dans une table de données, vous pouvez probablement utiliser Tabulate (sous le menu Analyze).
Aller à analyser> tabuler.
Faites glisser Ville vers "Zone de dépôt pour les lignes".
Faites glisser Qty vers l'en-tête où il est maintenant indiqué "N".
Cliquez sur Terminé.
Je pense que cela devrait vous donner une liste triée des villes avec leurs quantités correspondantes.
Pour reproduire cela plus tard via un script, vous pouvez utiliser le menu du triangle rouge dans Tabuler pour aller à script> Enregistrer le script dans une fenêtre de script (ou enregistrer dans d'autres emplacements, y compris la table de données d'origine).
J'espère que cela pourra aider,
Michael