Discrepancia en el resultado del cálculo, media de columnas, etc.¿Por qué los resultados de los cálculos difieren al usar variables en comparación con cadenas directas? Sospecho que, al usar variables, la función de agrupación para la parte variable podría no funcionar. ¿Cómo se puede solucionar esto?
con la siguiente fórmula
Col Mean(
:data,
:A,
:B,
:C_D == "ccccccc"
)
Esta es la fórmula.
Col Mean(
:data,
:A,
:B,
Column(Eval Insert("C_^get_input_1^" == get_input_2))
)
Automatización y scriptingRe: Discrepancia en el resultado del cálculo, media de columnas, etc.Lo siento a todos. Olvidé mencionar eso.get_input_1yget_input_2Se puede suponer que ya se obtuvieron como cadenas, respectivamente.
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.El primero compara una columna con una cadena, y el segundo no nos permite estar seguros de qué se compara (¿cadena con cadena, que siempre sería 1 o 0?). Al menos no se evalúa y tendrás que incorporar los valores a la fórmula.
Insertar una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.Quiero obtener el mismo resultado que la expresión de la primera línea. Cuando las variables se indicaron como get_input_1="D" y get_input_2="cccccc" respectivamente, esperaba el mismo resultado, pero la realidad fue diferente...
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.Eval(Substitute(
Expr(Col Mean(
:data,
:A,
:B,
_input1_ == _input2_
),
Expr(_input1_) = NameExpr(AsColumn(dt, get_input_1)),
Expr(_input2_) = get_input_2
)
));
pero necesitas agregar una nueva columna y fórmula a ese ejemplo
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.
Column(Eval Insert("C_^get_input_1^" == get_input_2)) se evalúa como Column( "C_D" == "ccccccc" ), por lo que su fórmula sería
editar
Incluir una cadena no válida dentro de Eval Insert() en realidad hace que se evalúe como una cadena vacía.
Col Mean(
:data,
:A,
:B,
Column( "" )
);
Quizás por eso no funciona como se esperaba. La solución de Jarmo debería ser lo que buscas.
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.
Gracias por sus respuestas. También les pido disculpas por haber respondido tarde.
Escribí el JSL como se muestra a continuación, pero se genera un error. ¿Cuál podría ser la causa?
El mensaje de error dice "argumentos insuficientes" en la ubicación "Sustituir/ ### /(Expr(".
Data Table( "data_table" ) << New Column( Eval Insert("Xbar_^get_input_process^_^get_input_line^"),
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Eval(Substitute(
Expr(Col Mean(
:data,
:A,
:B,
_input1_ == _input2_
),
Expr(_input1_) = NameExpr(AsColumn(dt, Eval Insert("new_^get_input_1^"))),
Expr(_input2_) = get_input_2
)
));
)) << Run Formulas;
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.Insertar una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute
Lo más probable es que sea algo así, pero no puedo probarlo porque no tengo datos ni la parte anterior del script.
Names Default To Here(1);
dt = Data Table("data_table");
Eval(Substitute(
Expr(Data Table("data_table") << New Column(colname,
Numeric,
"Continuous",
Formula(Col Mean(:data, :A, :B, _input1_ == _input2_)),
)),
Expr(colname), Substitute(Xbar_^get_input_process^_^get_input_line^),
Expr(_input1_) = NameExpr(AsColumn(dt, Eval Insert("new_^get_input_1^"))),
Expr(_input2_) = get_input_2
));
Re: Discrepancia en el resultado del cálculo, media de columnas, etc.Gracias por su consideración, aunque fue difícil experimentar sin poder proporcionar datos reales.
Lo modifiqué de la siguiente manera para adaptarlo a mi tabla de datos.
Names Default To Here(1);
dt = Data Table("data_table");
Eval(Substitute(
Expr(Data Table("data_table") << New Column(colname,
Numeric,
"Continuous",
Formula(Col Mean(:data, :A, :B, _input1_ == _input2_)),
)),
Expr(colname), Eval Insert(Xbar_^get_input_process^_^get_input_line^),
Expr(_input1_) , NameExpr(AsColumn(dt, Eval Insert("new_^get_input_1^"))),
Expr(_input2_) , get_input_2
));