Colonnes de concaténation de scriptBonjour
J'ai écrit un script pour concaténer les colonnes dans la colonne "PIN_NAME"
Mon problème est que je n'ai pas un nombre constant de colonnes.
Je devrais concaténer la colonne de Test_name 10 jusqu'à Test_name 15, mais parfois j'ai juste Test_name 10 jusqu'à Test_name 13 (par exemple)
et j'ai reçu une erreur car le script essaie de concaténer Test_Name 14 et Test_Name 15 qui n'existent pas.
Pouvez-vous m'aider avec ce problème?

Colonne(dt_split,"PIN_NAME") << Formule(Char(:TEST_NAME 10 || " " ||
:TEST_NAME 11 || " " ||
:TEST_NAME 12 || " " ||
:TEST_NAME 13 || " " ||
:TEST_NAME 14 || " " ||
:TEST_NAME 15)
);
Scriptles fenêtresRe : Script de concaténation de colonnesCela nécessite que les colonnes d'intérêt soient des colonnes de caractères, que vous ayez JMP16 et que les colonnes passent la regex "Column \d{2}"
Idée générale
- Obtenir la liste des noms de colonnes
- Construisez une liste de noms de colonnes qui vous intéressent en utilisant un filtre (j'utilise regex)
- Construisez l'expression de la formule avec la liste de 2.
- Utilisez Eval(EvalExpr()) pour l'ajouter à une nouvelle colonne avec une formule
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(0),
Compress File When Saved(1),
New Column("Column 1", Character, "Nominal", Set Values({"a"})),
New Column("Column 2", Character, "Nominal", Set Values({"b"})),
New Column("Column 10", Character, "Nominal", Set Values({"c"})),
New Column("Column 11", Character, "Nominal", Set Values({"d"})),
New Column("Column 12", Character, "Nominal", Set Values({"e"}))
);
col_names = dt << Get Column Names(Character, "String");
list_expr = Expr(List());
For Each({col_name}, col_names,
If(!IsMissing(Regex(col_name, "Column \d{2}")),
Insert Into(list_expr, Name Expr(AsColumn(Column(dt, col_name))));
);
);
// show(Name Expr(list_expr));
Eval(EvalExpr(
dt << New Column("PINNAME", Character, Nominal,
Formula(Concat Items(Expr(list_expr), " "))
);
));Re: Script de concaténation des colonnesSi vous avez Jmp17, les choses seront beaucoup plus faciles.
Vous pouvez ensuite appeler une fonction à partir de la nouvelle colonne de formules - aucune restriction aux colonnes de type caractère:)
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :name, :age, :sex, :height, :weight )
);
Encore mieux : vous pouvez même utiliser des variantes qui sont désactivées dans le menu Nouvelle colonne de formule du clic droit.
nouveau menu de colonne de formule - ne pas désactiver les variantes
comme la concaténation pour les entrées numériques et le comptage des entrées de colonnes de caractères :
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Character" ), "Concatenate with Space" ),
Columns( :height, :weight )
);
);
Data Table( "Big Class" ) << New Formula Column(
Operation( Category( "Aggregate" ), "Count" ),
Columns( :name ),
Group By( :sex )
);
désactivé dans le menu Nouvelle colonne de formule du clic droit - ARGH !!!!