Valutazione di un elenco di colonne variabili come stringa e inserimento in una nuova formula di colonnaHo creato una variabile che è una stringa di nomi di colonne.Questo è all'interno di un ciclo FOR, quindi cambierà ad ogni ciclo.
Ecco una tabella di esempio per dimostrazione, in realtà la mia tabella è di circa 400 colonne con nomi strani.Sto cercando di raggruppare le colonne che dovrebbero essere raggruppate e riportare il valore massimo. Il 99,9% delle volte ci sarà solo 1 valore per riga per ogni colonna "mi piace" che deve essere raggruppata.
| col.1 | Col2 | Col3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
Questa prima parte è un ciclo che genera un elenco di colonne variabili.Non ho tutto il codice qui, ma ecco un riepilogo.Funziona quindi non voglio impantanare la discussione in questo.
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
Quindi il mio codice dovrebbe creare una nuova colonna denominata "VarName" (definita in un'altra parte del ciclo), quindi inserire una formula che riporti il valore massimo di qualsiasi colonna si trovi in VarCols.Ma non riesco proprio a farlo valutare.Sto sbagliando in questo modo?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
Ecco l'errore specifico anche se ho inserito il nome della colonna variabile per evitare confusione:
Colonna NomeVar Formula Interrotta
Nome Irrisolto: colonne 1 volte Alle righe: 2 Operazione: colonne, colonne( Eval( VarCols) ) /*###*/
Gli errori di valutazione della formula sono stati ignorati
Ri: Valutazione di un elenco di colonne variabili come stringa e inserimento in una nuova formula di colonnaFornisci il valore di "TheExpr"
Ri: Valutazione di un elenco di colonne variabili come stringa e inserimento in una nuova formula di colonnaTifoso di lunga data. La prima volta che devo effettivamente postare per ottenere una risposta a una domanda.
Questo è fantastico. Sono appena riuscito ad arrivare allo stesso punto nel mio codice. Il prossimo passo è inserire questa stringa in una funzione in una nuova colonna.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
ma questo non funziona per me. Qualsiasi aiuto sarebbe apprezzato.
Si prega di ignorare. Il cervello non funzionava fino a tardi stasera...
Ri: Valutazione di un elenco di colonne variabili come stringa e inserimento in una nuova formula di colonnaHa funzionato, grazie @txnelson
Ri: Valutazione di un elenco di colonne variabili come stringa e inserimento in una nuova formula di colonnaUn altro membro della comunità potrebbe avere un pezzo di codice più efficiente, ma ecco come codificherei la tua richiesta
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 ) );