計算結果の差異、列平均など変数を使用した場合と直接文字列を使用した場合で計算結果が異なるのはなぜでしょうか?変数を使用した場合、変数部分のグループ化機能がうまく機能していないのではないかと考えています。どうすれば解決できますか?
次の式で
Col Mean(
:data,
:A,
:B,
:C_D == "ccccccc"
)
これが式です。
Col Mean(
:data,
:A,
:B,
Column(Eval Insert("C_^get_input_1^" == get_input_2))
)
自動化とスクリプト計算結果の不一致、列平均などについて皆さん、すみません。言い忘れていましたget_input_1そしてget_input_2それぞれ文字列として既に取得されているものと想定できます。
計算結果の不一致、列平均などについて1つ目は列と文字列の比較で、2つ目は何を比較しているのか不明です(文字列同士の比較なので、常に1か0になるのでしょうか?)。少なくとも評価は行われないので、式に値を入力して評価する必要があります。
Eval Insert、Eval Expr、Parse、Substitute を使用して、ある式を別の式に挿入します。
計算結果の不一致、列平均などについて1行目の式と同じ結果を得たいのですが、変数がそれぞれ get_input_1="D"、get_input_2="cccccc" と指定されていたので、当然同じ結果になると思っていましたが、実際は違いました…。
計算結果の不一致、列平均などについてEval(Substitute(
Expr(Col Mean(
:data,
:A,
:B,
_input1_ == _input2_
),
Expr(_input1_) = NameExpr(AsColumn(dt, get_input_1)),
Expr(_input2_) = get_input_2
)
));
しかし、その例に新しい列と数式を追加する必要があります
計算結果の不一致、列平均などについて
Column(Eval Insert("C_^get_input_1^" == get_input_2)) は Column( "C_D" == "cccccccc" ) と評価されるので、式は次のようになります。
編集
Eval Insert() 内に文字列以外のものを含めると、実際には空の文字列として評価されます。
Col Mean(
:data,
:A,
:B,
Column( "" )
);
それが期待通りに動作しない理由かもしれません。Jarmo の解決策があなたの希望に合っているはずです。
計算結果の不一致、列平均などについて
ご返信ありがとうございます。また、返信が遅くなり申し訳ございません。
以下のようにJSLを記述したのですが、エラーが出力されます。原因は何でしょうか?
エラー メッセージには、"Substitute/ ### /(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;
計算結果の不一致、列平均などについてEval Insert、Eval Expr、Parse、Substitute を使用して、ある式を別の式に挿入します。
おそらくこのようなものだと思いますが、データやスクリプトの前半部分がないのでテストできません。
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
));
計算結果の不一致、列平均などについて実際のデータが提供できず実験が困難であったにもかかわらず、ご検討いただきありがとうございます。
データ テーブルに適合するように次のように変更しました。
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
));