Evaluación de una lista de columnas variables como una cadena e inserción en una nueva fórmula de columnaCreé una variable que es una cadena de nombres de columna.Esto está dentro de un ciclo FOR, por lo que cambiará con cada ciclo.
Aquí hay una tabla de muestra para demostración, en realidad mi tabla tiene aproximadamente 400 columnas con nombres extraños.Estoy tratando de agrupar columnas que deberían agruparse e informar el valor máximo. El 99,9 % de las veces solo habrá 1 valor por fila para cada columna 'me gusta' que se agrupará.
| Col1 | Col2 | Col3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
Esta primera parte es un ciclo que genera una lista de columnas variables.No tengo todo el código aquí, pero aquí hay un resumen.Esto funciona, así que no quiero atascar la discusión en esto.
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
Luego, se supone que mi código crea una nueva columna llamada 'VarName' (definida en otra parte del ciclo) y luego inserta una fórmula que informa el valor máximo de las columnas que están en VarCols.Pero simplemente no puedo hacer que se evalúe.¿Estoy haciendo esto mal?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
Aquí está el error específico, aunque inserté el nombre de la columna variable para evitar confusiones:
Columna VarName Fórmula interrumpida
Nombre Sin resolver: columnas 1 veces En filas: 2 Operación: columnas, columnas (Eval (VarCols)) /*###*/
Los errores de evaluación de fórmulas se han ignorado
Re: Evaluar una lista de columnas variables como una cadena e insertar en una nueva fórmula de columnaProporcione el valor de "TheExpr"
Re: Evaluar una lista de columnas variables como una cadena e insertar en una nueva fórmula de columnaAficionado desde hace mucho tiempo. La primera vez que necesito publicar para obtener una respuesta a una pregunta.
Esto es genial. Logré llegar al mismo punto en mi código. El siguiente paso es insertar esta cadena en una función en una nueva columna.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
pero eso no está funcionando para mí. Cualquier ayuda sería apreciada.
Por favor, no hagas caso. El cerebro no estaba funcionando bien tarde esta noche...
Re: Evaluar una lista de columnas variables como una cadena e insertar en una nueva fórmula de columnaEso funcionó, gracias @txnelson
Re: Evaluar una lista de columnas variables como una cadena e insertar en una nueva fórmula de columnaOtro miembro de la comunidad puede tener un código más eficiente, pero así es como codificaría su solicitud
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
VarCols = {"NPN1", "PNP2", "NPN2"};
VarName = "NewCol";
// Create the JSL required to generate the new column
theExpr = "DT << New Column(VarName, Numeric, Continuous, formula(Maximum(:" || VarCols[1];
For( i = 2, i <= N Items( VarCols ), i++,
theExpr = theExpr || ",:" || VarCols[i]
);
theExpr = theExpr || ")));";
// Run the generated JSL
Eval( Parse( theExpr ) );