JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeJe souhaite sélectionner toutes les colonnes à droite de la colonne « Adders ». Le code ci-dessous s'exécute, mais ne sélectionne pas visiblement les colonnes à droite de « Adders ». Le nombre de colonnes à gauche et à droite de « Adders » peut varier.
<JSL> Names Default To Here(1);
dt = Data Table("Test Table");
dt << Bring Window To Front;
Show(dt << Get Name);
// Step 1: Get all column names and show them
colNames = dt << Get Column Names();
Show(colNames);
// Step 2: Find the index of the "Adders" column
targetColName = "Adders";
colIndex = Loc(colNames, targetColName);
Show(colIndex); // Should be > 0 if found
// Step 3: Try to visually select all columns to the right
If(colIndex > 0 & colIndex < N Cols(dt),
dt << Clear Column Selection;
For(i = colIndex + 1, i <= N Cols(dt), i++,
Column(dt, i) << Set Selected(1);
);
// Step 4: Show what JMP thinks is selected
selected = dt << Get Selected Columns;
Show(selected);
,
New Window("Error", Text Box("Column 'Adders' not found, or it's the last column."));
);</JSL>
Sortir:
dt << Get Name = "Test Table";
colNames = {A, B, Adders, X, Y};
colIndex = [];Automatisation et scriptsWindowsRe : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeJ'apporterais deux modifications ici. Vous devez spécifier « string » dans votre message « Obtenir les noms de colonnes ». Vous devez ensuite remplacer la fonction Loc() par « Contains() ». Loc() renvoie une matrice, parfois vide. Contains() renvoie un entier (0 si introuvable).
Names Default To Here(1);
dt = Data Table("Test Table");
dt << Bring Window To Front;
Show(dt << Get Name);
// Step 1: Get all column names and show them
colNames = dt << Get Column Names( "string" );
Show(colNames);
// Step 2: Find the index of the "Adders" column
targetColName = "Adders";
colIndex = Contains(colNames, targetColName);
Show(colIndex); // Should be > 0 if found
// Step 3: Try to visually select all columns to the right
If(colIndex > 0 & colIndex < N Cols(dt),
dt << Clear Column Selection;
For(i = colIndex + 1, i <= N Cols(dt), i++,
Column(dt, i) << Set Selected(1);
);
// Step 4: Show what JMP thinks is selected
selected = dt << Get Selected Columns;
Show(selected);
,
New Window("Error", Text Box("Column 'Adders' not found, or it's the last column."));
);
//Output:
//dt << Get Name = "Test Table";
//colNames = {"A", "B", "Adders", "X", "Y"};
//colIndex = 3;<BR />//selected = {:X, :Y};Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeJe suis sûr qu'il existe d'autres façons de procéder, mais le script suivant trouvera la colonne « Adders », puis la sélectionnera ainsi que toutes les colonnes à droite :
names default to here(1);
dt = current data table();
targetCol = "Adders";
targetColNum = 0;
for( i = 1, i <= n cols( dt ), i++,
if( column( dt,i ) << get name == targetCol, targetColNum = i )
);
dt << select columns( targetColNum::n cols(dt) )
Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeJ'ai édité votre message initial et déplacé le JSL et sa sortie dans une fenêtre JSL et une fenêtre de code respectivement, en utilisant les icônes de saisie en haut de la fenêtre de saisie d'édition.
J'ai également modifié votre code pour que << récupère les noms de colonnes, renvoie des chaînes et, au lieu d'utiliser Loc(), utilise Contains() pour renvoyer une valeur unique plutôt qu'une valeur matricielle.
Names Default To Here(1);
dt = Data Table("Test Table");
dt << Bring Window To Front;
Show(dt << Get Name);
// Step 1: Get all column names and show them
colNames = dt << Get Column Names(string);
Show(colNames);
// Step 2: Find the index of the "Adders" column
targetColName = "Adders";
// Loc() returns a matrix, contains returns a scaler value
colIndex = contains(colNames, targetColName );
Show( colIndex ); // Should be > 0 if found
// Step 3: Try to visually select all columns to the right
If( colIndex > 0 & colIndex < N Cols( dt ),
dt << Clear Column Selection;
For( i = colIndex + 1, i <= N Cols( dt ), i++,
Column( dt, i ) << Set Selected( 1 )
);
// Step 4: Show what JMP thinks is selected
selected = dt << Get Selected Columns;
Show( selected );
,
New Window( "Error", Text Box( "Column 'Adders' not found, or it's the last column." ) )
);Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeMerci pour les corrections.
Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeJim : Merci pour les corrections.
Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeScott : Merci pour le code qui fonctionne.
Re : JMP 18 : Sélectionner toutes les colonnes à droite d'une colonne spécifiéeContient + l'indexation qui devrait rendre cela assez simple
Names Default To Here(1);
dt = Data Table("Test Table");
collist = dt << Get Column Names("String");
adders_idx = Contains(collist, "Adders");
If(adders_idx == 0,
Throw("No Adders column found");
);
dt << Select columns(collist[adders_idx + 1::N Items(collist)]);
Show(dt << Get Selected Columns);