Qu'est-ce qui a inspiré cette demande de liste de souhaits ?
Je dois assez souvent créer des colonnes d'étiquetage en fonction des valeurs de ligne sur une colonne. Par exemple, je pourrais avoir la colonne ERROR_DESCRIPTION et quand elle a une valeur, cela signifie qu'une erreur s'est produite, sinon le test était correct. J'aimerais donc avoir la formule FAILURE labels :ERRORDESCRIPTION != "" -> "1" sinon "0".Et j'aimerais pouvoir le faire avec New Formula Colum et en tant que colonnes Transform de Filter Col Selectors sur différentes plates-formes.
Quelle est l'amélioration que vous aimeriez voir?
J'aimerais voir la possibilité de créer une nouvelle colonne de formule (et une colonne de transformation) pour créer de tels étiquetages en fonction des valeurs de ligne.
Cet exemple combine deux types en un seul, mais l'idée serait qu'en fonction du type de données de la colonne, différentes sélections devraient être disponibles. L'interface utilisateur peut être rendue plus conviviale assez facilement (et devrait l'être), par exemple en désactivant les sélections jusqu'à ce que la valeur de la ligne ait été sélectionnée. Et peut-être que si le type de modélisation de colonne est continu, la zone de liste déroulante pourrait être une zone de curseur

et dans ce cas, les colonnes créées ressembleraient à ceci :
dt << New Column("Compare[age]", Character, Nominal, Formula(
If(:age >= 14, 1,
0
)
));
dt << New Column("Compare[name]", Character, Nominal, Formula(
If(:name == "ALFRED", "1",
:name == "CAROL", "2",
"0"
)
));
Script d'interface utilisateur de démonstration :
Voir plus...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Summarize(dt, col_options_num = By(:age));
Insert Into(col_options_num, "<SELECT>", 1);
numeric_options = {"==", ">=", ">", "<=", "<"};
Summarize(dt, col_options_char = By(:name));
Insert Into(col_options_char, "</SELECT><SELECT>", 1);
character_options = {"==", "!="};
lub_expr_numeric = Expr(Lineup Box(N Col(3),
Combo Box(col_options_num, << Set Function(function({this},
If(this << get selected != "</SELECT><SELECT>",
((this << parent) << parent) << Append(lub_expr_numeric);
);
))),
Combo Box(numeric_options),
Number Edit Box(.)
));
lub_expr_character = Expr(Lineup Box(N Col(3),
Combo Box(col_options_char, << Set Function(function({this},
If(this << get selected != "</SELECT><SELECT>",
((this << parent) << parent) << Append(lub_expr_character);
);
))),
Combo Box(character_options),
Text Edit Box("")
));
// could also be built with Table Box
nw = New Window("Demo", << modal,
H List Box(
Panel Box("Numeric - age",
Lineup Ruler Box(
Widths({100,70,50}),
Lineup Box(N Col(3),
Text Box("Row Value"),
Text Box("Compare"),
Text Box("Value")
),
V List Box(
lub_expr_numeric,
),
Text Box("..."),
Lineup Box(N Col(3),
Text Box("Else"),
Combo Box({""}, << Enabled(0)),
Number Edit Box(.)
)
)
),
Spacer Box(Size(50,0)),
Panel Box("Character - name",
Lineup Ruler Box(
Widths({100,70,50}),
Lineup Box(N Col(3),
Text Box("Row Value"),
Text Box("Compare"),
Text Box("Value")
),
V List Box(
lub_expr_character,
),
Text Box("..."),
Lineup Box(N Col(3),
Text Box("Else"),
Combo Box({""}, << Enabled(0)),
Text Edit Box("")
)
)
),
Panel Box("Actions",
Button Box("OK",
num_vals = .
),
Button Box("Cancel")
)
)
);
</SELECT>
Pourquoi cette idée est-elle importante ?
Il serait beaucoup plus rapide de créer des colonnes d'étiquetage de transformation qui ne dépendent pas des sélections mais plutôt des valeurs de ligne dans la colonne.