我编写了一个脚本,用于查找 col2 和 col3 匹配特定字符串的行,然后返回这些行的 col7 中单元格的值。但是,我在将这些变量写入新表中的新列时遇到问题。
....
New Table( "Results",Add Rows( 2 ),
New Column( " FUS",Character,"Nominal",
Set Values({"Fus1","Fus2"})),
New Column( "PASS/FAIL",continuous,"Nominal", formula( Name Expr(APass)),formula(Name Expr(BPass)));
)这里,APass 和 Bpass 是等于来自各个搜索行的 column7 值的变量。它们分别是字符串 Pass 和 Fail。但是,当我创建表时,最后一个函数会覆盖并填充整个表中的结果。 所以表应该是Fus1-Pass Fus2-Fail,但是输出Fus1-Fail Fus2-Fail。当我改变顺序时相反。
有关如何使用多个变量填充新列的任何帮助?
非常感激
正如您之前关于此主题的讨论所述,您不能必须为列定义公式。这是使用大类数据表的简单说明。如果您为一列定义了 2 个公式,则第二个公式将替换第一个公式。
new column("two formula", formula(:height), formula(:weight));
给出以下结果

请注意,定义的第二个公式是 JMP 最终使用的公式。
现在,这并不是说公式不能复杂。人们实际上可以定义一个公式,以不同的方式对待每一行。它只需要在一个公式中定义。这是一个更复杂的公式的简单示例,该公式将多个列带入公式,并在它们之间进行比较。
New Column( "combined formula",
formula(
If(
:Sex == "F" & :age > 12, :weight,
:Sex == "F" & :age <= 12, :height,
:Sex == "M" & :age > 13, :weight,
:Sex == "M" & :age <= 13, :height
)
)
)

我私下向 SMW 提供了此回复;希望它会帮助别人。
尝试运行此代码。在日志窗口中查看会发生什么。get rows where 函数返回一个矩阵,而不是实际的行号。您必须遍历矩阵才能使用行值。
Names Default To Here( 1 );
dt1 = New Table( "Test", Add Rows( 4 ),
New Column( "Column 1", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [1, 2, 3, 4] ) ),
New Column( "Column 2", Character, "Nominal",
Set Values( {"This is EMOTIONAL", "abc", "EMO", "Here's an EMO example"} ) ),
New Column( "Column 3", Character, "Nominal",
Set Values(
{"And not KLARIFIED", "KLA", "xyz", "This contains KLA string"} ) ),
New Column( "Column 4", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 5", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 6", Numeric, "Continuous", Format( "Best", 12 ),
Set Values( [., ., ., .] ) ),
New Column( "Column 7", Character, "Nominal",
Set Values( {"Hello", "World", "Fubar", "Ski"} ) ),
);
match_rows = dt1 << get rows where(contains(as column(2),"EMO")
& contains(as column(3),"KLA"));
for (i = 1, i <= nrows(match_rows), i++,
one_row = match_rows[i];
apass = column(dt1, 7)[one_row];
print(apass);
);