计算结果差异、列平均值等。为什么使用变量和直接使用字符串的计算结果不同?我怀疑使用变量时,变量部分的分组功能可能没有正常工作。如何解决这个问题?
使用以下公式
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 或 0 吗?)。至少它没有被计算,你需要将这些值代入公式进行计算。
使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入到另一个表达式中
回复:计算结果差异、列平均值等。我想要得到和第一行表达式相同的结果。当变量分别设为 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" == "ccccccc"),因此您的公式将是:
编辑
在 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
));