Comment puis-je écrire un script pour regrouper automatiquement les colonnes dans une nouvelle table ?Bonjour,
J'écris actuellement un script pour joindre essentiellement trois tables "de référence" à l'aide des fonctions Join, Transpose et Update. Mon script permet de mettre à jour la table de sortie finale chaque fois que j'ajoute des lignes à la première table "de référence".
Je me demandais s'il serait possible d'éditer mon script pour regrouper automatiquement les colonnes (c'est-à-dire la fonction "Grouper les colonnes") dans la table de sortie finale en fonction de la valeur d'une colonne de la première table "de référence" ? Cette colonne n'est apportée dans aucune des fonctions de table car elle causerait des problèmes de transposition. Il est important que ces regroupements restent pour chaque mise à jour du tableau final.
J'apprécie tout commentaire que vous pourriez avoir.
- Brian D.
Re : Comment puis-je écrire un script pour regrouper automatiquement les colonnes dans une nouvelle table ?Jetez un œil dans l'index de script pour les utilisations des colonnes de groupe.
Voici une façon de faire ce que vous avez indiqué
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt2 = New Table( "groupings",
New Column( "ID", character, set values( {"name", "age", "sex", "height", "weight"} ) ),
New Column( "Type", character, set values( {"A", "B", "C", "B", "A"} ) )
);
// Split data into columns based on Type
dtSplit = dt2 << Split( Split By( :Type ), Split( :ID ), Sort by Column Property );
// Process through the Split data table, creating the groups in the first data table
For( Group = 1, Group <= N Cols( dtSplit ), Group++,
theGroup = Column( dtSplit, Group ) << get values;
For(i=nitems(theGroup), i>=1,i--,if(theGroup[i] == "",
remove from(thegroup,i,1)));
grouping = dt << group columns( theGroup ); <BR /><BR /><FONT face="Consolas,Monaco,"Andale Mono","Ubuntu Mono",monospace" size="2" style="background-color: #f5f5f5;" color="#b00000">dt << Rename Column Group( grouping, (column(dtSplit, group)<<GET name="">
);</GET></FONT>Re : Comment puis-je écrire un script pour regrouper automatiquement les colonnes dans une nouvelle table ?Pas exactement, bien qu'une instruction If similaire puisse être utile. Le tableau de référence que j'ai mentionné (tableau 1) comporte deux colonnes pertinentes, "ID" et "Type". Le tableau de sortie final (tableau 2) a la colonne "ID" transposée de sorte que les valeurs sous cette colonne dans le tableau 1 sont maintenant des noms de colonne dans le tableau 2. Ce que j'aimerais faire, c'est regrouper ces colonnes dans le tableau 2 en fonction de leurs valeurs correspondantes dans la colonne "Type" du tableau 1.Re : Comment puis-je écrire un script pour regrouper automatiquement les colonnes dans une nouvelle table ?Est-ce le genre de chose que vous recherchez ?
Names Default To Here( 1 );
dt1 = New Table( "table1", add rows(1), New Column( "test", set values( [1] ) ) );
dt2 = New Table( "table2", add rows(2),
new column( "x1", character, set values( {"a", "b"} ) ),
New Column( "x2", character, set values( {"c", "d"} ) )
);
If( dt1:test[1] == 1,
dt2 << combine columns( delimiter( "," ),
columns( dt2:x1, dt2:x2 ), Column Name( "Combined" ) )
);