スクリプト内の変数として保存された数式を使用して新しい列を作成するスクリプトを使って、あるデータから予測される数式を抽出し、その数式を置換で修正し、修正した数式を使って新しい列を作成したいと考えています。これは簡単だと思うのですが、スクリプトを作成しようとすると、変数として保存した数式が認識されません。何かご助力いただけると大変助かります。さらに情報が必要な場合はお知らせください。
//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));
// スクリプトで fm2 を印刷すると、ログに返される内容は次のとおりです。
印刷(fm2);
(-0.270568) + 0.0352458 * Log(Time2) - 0.0331127 * (Log(Time2) - 7.22484) ^ 2 + 0.0046766 * (Log(Time2) - 7.22484) ^ 3 + 0.0075752 * (Log(Time2) - 7.22484) ^ 4 + 0.0012501 * (Log(Time2) - 7.22484) ^ 5 + 0.000026534 * (Log(Time2) - 7.22484) ^ 6
高度な統計モデリング消費者および市場調査コンテンツの編成データのブレンドとクリーンアップデータの探索と可視化マスカスタマイゼーション品質およびプロセスエンジニアリング結果の共有と伝達Re: スクリプトに変数として保存された数式を使用して新しい列を作成するありがとう!
Re: スクリプトに変数として保存された数式を使用して新しい列を作成する数式を文字列として保持し、追加するためのヒントをありがとう「:」は、JMP に列であるかどうかを知らせます。 eval(parse()) を機能させることができませんでした。なぜこれでも二重引用符が必要なのかわかりませんでした。
Re: スクリプトに変数として保存された数式を使用して新しい列を作成する式を文字列として保持し、その中で置換し、「:」を追加してJMPが列を扱っていることを知らせてから使用します。
eval(解析())
それを実行するために。これは簡単な例です
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 || "));"));Re: スクリプトに変数として保存された数式を使用して新しい列を作成する代わりにこれを試してください:
Eval(
Substitute(
Expr( dt << New Column( "Predicted", Numeric, Formula ( fff ) ) ),
Expr( fff ), Name Expr( fm2 )
)
);