Cosa ha ispirato questa richiesta di lista dei desideri?
Abbastanza comunemente devo creare colonne di etichettatura a seconda dei valori di riga su una colonna. Ad esempio, potrei avere la colonna ERROR_DESCRIPTION e quando ha un valore significa che si è verificato un errore altrimenti il test era ok. Quindi mi piacerebbe avere la formula delle etichette FAILURE: ERRORDESCRIPTION! = "" -> "1" altrimenti "0".E mi piacerebbe poterlo fare con New Formula Colum e come Transform colonne da Filter Col Selectors in diverse piattaforme.
Qual è il miglioramento che vorresti vedere?
Vorrei vedere la possibilità di creare una nuova colonna formula (e trasformare la colonna) per creare tali etichette basate sui valori di riga.
Questo esempio combina due tipi in uno, ma l'idea sarebbe che, a seconda del tipo di dati della colonna, dovrebbero essere disponibili selezioni diverse. L'interfaccia utente può essere resa più facile da usare abbastanza facilmente (e dovrebbe esserlo), ad esempio disabilitando le selezioni fino a quando non è stato selezionato Valore riga. E forse se il tipo di modellazione della colonna è continuo, la casella combinata potrebbe essere una casella di scorrimento

e in questo caso le colonne create sarebbero qualcosa del genere:
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 dell'interfaccia utente demo:
Visualizza altro...
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>
Perché questa idea è importante?
Renderebbe molto più veloce la creazione di colonne di etichettatura di trasformazione che non dipendono dalle selezioni ma piuttosto dai valori di riga nella colonna.