¿Qué inspiró esta solicitud de lista de deseos?
Comúnmente tengo que crear columnas de etiquetado según los valores de fila en una columna. Por ejemplo, podría tener la columna ERROR_DESCRIPTION y cuando tiene un valor significa que ocurrió un error; de lo contrario, la prueba estuvo bien. Así que me gustaría tener una fórmula de etiquetas de FALLA: ¡DESCRIPCIÓN DE ERROR! = "" -> "1" más "0".Y me gustaría poder hacer esto con New Formula Colum y como columnas Transform de Filter Col Selectors en diferentes plataformas.
¿Cuál es la mejora que le gustaría ver?
Me gustaría ver la posibilidad de crear una nueva columna de fórmula (y una columna de transformación) para crear dichos etiquetados en función de los valores de las filas.
Este ejemplo combina dos tipos en uno, pero la idea sería que dependiendo del Tipo de datos de la columna, deberían estar disponibles diferentes selecciones. La interfaz de usuario se puede hacer más fácil de usar (y debería serlo), por ejemplo, al deshabilitar las selecciones hasta que se haya seleccionado el valor de la fila. Y tal vez si el tipo de modelado de columna es continuo, el cuadro combinado podría ser un cuadro deslizante

y en este caso las columnas creadas serían algo como esto:
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"
)
));
Guión de interfaz de usuario de demostración:
Ver más...
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>
¿Por qué es importante esta idea?
Haría mucho más rápido crear columnas de etiquetado de transformación que no dependen de las selecciones sino de los valores de fila en la columna.