JMP Tabuler par liste de noms de colonnes dans JSLBonjour,
J'ai une table et je veux la tabuler par colonne "étudiant", colonne "sujet" et colonne "classe" mais la colonne "Sujet" et la colonne "classe" ne sont pas nécessaires pour être disponibles dans les données.
S'il a la colonne "sujet" mais pas la colonne "classe", alors il doit tabuler par colonne "étudiant" et colonne "sujet".
S'il a la colonne "classe" mais pas la colonne "sujet", alors il doit tabuler par colonne "étudiant" et colonne "classe".
S'il a toutes les colonnes, il doit tabuler par les trois colonnes. Voici quelques exemples.
Exemple 1 : (Il a à la fois la colonne "sujet" et la colonne "classe")
Saisir:
| Classe | Étudiant | Des marques | Sujet |
| 1 | UN | dix | Mathématiques |
| 2 | UN | 15 | Science |
| 3 | UN | 12 | Science |
| 1 | B | 15 | Mathématiques |
| 2 | B | 12 | Science |
Sortir:
| Classe | Étudiant | Sujet | max(Marques) |
| 1 | UN | Mathématiques | dix |
| 2 | UN | Science | 15 |
| 3 | UN | Science | 12 |
| 1 | B | Mathématiques | 15 |
| 2 | B | Science | 12 |
Exemple 2 : (Il a la colonne "Classe" mais pas la colonne "sujet")
Saisir:
| Classe | Étudiant | Des marques |
| 1 | UN | dix |
| 2 | UN | 15 |
| 3 | UN | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
Sortir:
| Classe | Étudiant | max(Marques) |
| 1 | UN | dix |
| 2 | UN | 15 |
| 3 | UN | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
Exemple 3 : (Il a la colonne "sujet" mais pas la colonne "classe")
Saisir:
| Étudiant | Des marques | Sujet |
| UN | dix | Mathématiques |
| UN | 15 | Science |
| UN | 12 | Science |
| B | 15 | Mathématiques |
| B | 12 | Science |
Sortir:
| Étudiant | Sujet | max(Marques) |
| UN | Mathématiques | dix |
| UN | Science | 15 |
| B | Mathématiques | 15 |
| B | Science | 12 |
S'il vous plaît aidez-moi à résoudre ce problème.
Merci
Re : JMP Tabuler par liste de noms de colonnes dans JSLMerci @tsnelsonRe : JMP Tabuler par liste de noms de colonnes dans JSLEst-ce ce que vous recherchez???
names default to here(1);
dt=current data table();
// The list of columns to look for
theList={"Class","Student","Subject", "xxxxxx","xxxxxx"};
allColList = dt << get column names(string);
// Remove any columns from theList that are not in the data table
For(i=n items(theList),i>=1, i--,
If(n rows(loc(allColList,theList[i]))==0,
remove from(theList,i,1)
)
);
// Run the tabulate
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Marks ), Statistics( Max ) ),
Row Table( Grouping Columns( eval(theList) ) )
)
);
Si les différentes colonnes cibles jouent des rôles autres que les colonnes de regroupement, vous devrez développer le code prenant en compte les différentes syntaxes d'entrée requises.
Re : JMP Tabuler par liste de noms de colonnes dans JSL@txnelson J'ai 5 colonnes comme la colonne "Classe" et la colonne "Sujet" qui peuvent être présentes ou non dans les données. Maintenant, pour tabuler, je dois donner toutes les permutations de conditions IF et chacune aurait un code de tabulation séparé. Cela rendra le code trop brouillon.
Au lieu de cela, si nous pouvons le faire avec une seule fonction Tabuler dans laquelle nous donnons toute la liste des colonnes et il ne prendra que les colonnes qui sont disponibles dans les données.
MerciRe : JMP Tabuler par liste de noms de colonnes dans JSLCondenser le code Tabuler à un seul ensemble de code rendrait le code beaucoup plus complexe.
Quand vous dites que vous avez beaucoup plus de colonnes, pouvez-vous expliquer davantage ?
Re : JMP Tabuler par liste de noms de colonnes dans JSL@txnelson Merci d'avoir répondu.
Pouvons-nous résoudre ce problème avec un seul bloc de script de tabulation, car dans mon jeu de données d'origine, j'ai de nombreuses colonnes de ce type.Re : JMP Tabuler par liste de noms de colonnes dans JSLExécutez chacun des 3 scénarios sur un exemple de table de données, en enregistrant chacun des scripts de chaque exécution, dans une fenêtre de script.Ensuite, prenez chacun des scripts appropriés et placez-les dans le script suivant dans la position désignée
names default to here(1);
dt= current data table();
colNames = dt << get column names(string);
// Here is the IF() structure to add in the tabulate code to
If( N Rows(loc(colNames, "Subject" ) ) > 0 & N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tabulate code that has Student, Subject and Class
,
N Rows(loc(colNames, "Subject" ) ) > 0,
// Add in the tablulate code that has just Student and Subject
,
N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tablulate code that has just Student and Class
);