Sto utilizzando uno script per estrarre una formula prevista da alcuni dati in mio possesso, quindi modifico la formula tramite sostituzione e ora vorrei creare una nuova colonna utilizzando la formula modificata. Penso che sia semplice, ma quando provo a creare lo script, la formula salvata come variabile non viene riconosciuta. Qualsiasi aiuto sarebbe molto apprezzato, e non esitate a contattarmi se avete bisogno di ulteriori informazioni.
//Script that just shows saving the formula as a variable fm and modifying the variable using substitute to fm2
fm = report(obj1)[OutlineBox("Polynomial ?")][TextEditBox(1)] << get text;
//get the string to the right of the equal sign and convert the string to an expression using Parse()
fm = Parse(Trim(word(2, fm, "=")));
fm2 = Substitute(NameExpr(fm), EvalExpr(LnTime2), EvalExpr(log(Time2)));
//Script to create a new column with the fm2 formula that does not work
dt << New Column( "Predicted", Numeric, Formula (fm2));
//Ecco cosa viene restituito nel registro quando si stampa fm2 nello script
Stampa(fm2);
(-0,270568) + 0,0352458 * Log(Tempo2) - 0,0331127 * (Log(Tempo2) - 7,22484) ^ 2 + 0,0046766 * (Log(Tempo2) - 7,22484) ^ 3 + 0,0075752 * (Log(Tempo2) - 7,22484) ^ 4 + 0,0012501 * (Log(Tempo2) - 7,22484) ^ 5 + 0,000026534 * (Log(Tempo2) - 7,22484) ^ 6
Grazie per il suggerimento di mantenere la formula come stringa e aggiungere ":" per far sapere a JMP se è una colonna. Non sono riuscito a far funzionare eval(parse()), non ero sicuro del perché anche in questo fosse necessaria la doppia virgoletta.
Vorrei mantenere la formula come una stringa, sostituirla al suo interno, aggiungendo un ":" per far sapere a JMP che hai a che fare con una colonna e quindi utilizzare
eval(analisi())
per eseguirlo.Ecco un semplice esempio
names default to here(1);
dt=current data table();
fm="height";
fm2 = substitute(fm, expr("height"), "log(:height)");
eval(parse("dt << new column (\!"predicted\!",numeric,formula(" || fm2 || "));"));Prova questo invece:
Eval(
Substitute(
Expr( dt << New Column( "Predicted", Numeric, Formula ( fff ) ) ),
Expr( fff ), Name Expr( fm2 )
)
);